Java的Thread.sleep会以什么方式在这里有用?

时间:2012-09-11 12:27:25

标签: java multithreading java-ee

我正在开发一个现有的Java EE多线程应用程序。

我无法理解我的应用程序。有一个名为UserThread的线程,在run方法的while(true)条件下,它从一个位置读取数据并将数据推送到Websocket。之后,线程会休眠1000秒。

为什么这个Thread.sleep()有用?

2 个答案:

答案 0 :(得分:8)

听起来它只是被用来限制读取和/或写入,以避免一次发送太多请求。

答案 1 :(得分:4)

它正在模拟一个计时器,每x秒执行一次任务,这是非常糟糕的做法。考虑切换到java.util.TimerScheduledThreadPoolExecutor

ScheduledThreadPoolExecutor exec = new ScheduledThreadPoolExecutor(1);

exec.scheduleAtFixedRate(
      new Runnable() {
          public void run() {
               // code
          }
      }, 0, 1000, TimeUnit.Milliseconds);