我正在开发一个现有的 Java EE 多线程应用程序。
我无法在我的应用程序中理解这件事。有一个名为 的线程 UserThread
,在其run
方法的while(true)
条件下,它从一个位置读取数据并将数据推送到 Websocket。之后,线程休眠 1000 秒。
为什么这Thread.sleep()
很有用?
我正在开发一个现有的 Java EE 多线程应用程序。
我无法在我的应用程序中理解这件事。有一个名为 的线程 UserThread
,在其run
方法的while(true)
条件下,它从一个位置读取数据并将数据推送到 Websocket。之后,线程休眠 1000 秒。
为什么这Thread.sleep()
很有用?
听起来它只是用来限制读取和/或写入以避免一次发送太多请求。
它正在模拟一个计时器,每 x 秒执行一次任务,这是非常糟糕的做法。考虑切换到java.util.Timer
or ScheduledThreadPoolExecutor
:
ScheduledThreadPoolExecutor exec = new ScheduledThreadPoolExecutor(1);
exec.scheduleAtFixedRate(
new Runnable() {
public void run() {
// code
}
}, 0, 1000, TimeUnit.Milliseconds);