【发布时间】:2014-03-17 06:55:36
【问题描述】:
如何暂停服务器上运行的 java 代码?
例如:
do {
// do this
// alright, now do this
// wait for some time
} while(condition);
这段代码可以是任何东西。就像它可能是基于某种解释重新发布推文的应用程序的一部分。
使用是否正确:
Thread.sleep(duration);
【问题讨论】:
-
您能解释一下为什么要这样做吗?由于它在 Web 应用程序中,因此您将超时请求以及将服务器线程绑定在暂停状态。我认为没有理由这样做。您可以使用 Thread.sleep(),但可能有更好的方法来做您正在做的事情。
-
要么检查内部循环中的一些等待条件,只要这个条件为真,就让线程进入睡眠状态,或者在循环内获取一些锁,你也可以从循环外的其他地方获取这些锁,例如只有在你释放它后它才会继续。
-
Thread.sleep() 和其他语言中的类似操作通常不是一个好主意。也许你可以在不使用睡眠的情况下做你想做的事。在这种情况下 sleep 会阻塞服务器线程(或者在某些情况下会阻塞整个进程),并且可能会导致客户端超时,所以我会尝试寻找更好的方法。
-
您甚至可以探索调度执行器服务,因为并发包易于使用。
标签: java jakarta-ee web-applications