【问题标题】:How can I pause java code running on server?如何暂停在服务器上运行的 java 代码?
【发布时间】: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


【解决方案1】:

停止服务器线程不是一个好方法。也许您可以将计时器用于计划任务。

http://docs.oracle.com/javaee/6/tutorial/doc/bnboy.html

【讨论】:

    猜你喜欢
    • 2011-01-01
    • 2022-10-17
    • 2016-04-21
    • 1970-01-01
    • 1970-01-01
    • 2020-01-22
    • 2021-04-05
    • 2014-04-17
    相关资源
    最近更新 更多