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