0

我有一个可能有多个线程的应用程序。基本上线程应该这样工作:

  • 主线程
  • 计算线程
  • 计算线程
  • 计算线程

将这些线程添加/执行到 FixedThreadPool 不是问题。Thread 本身调用 Mainthread 中的某个函数来提交结果。在这一步之后,线程应该休眠,直到它再次被调用以进行下一次计算。

Mainthread 持有对 CalculationThread 的引用以向线程提交更新并将其读取到池中以开始下一次计算。

我的问题:如何强制某个线程超时?如果发生无限循环,此超时的强制执行也必须有效

4

1 回答 1

1

如果没有线程的合作,您不能强制超时,至少不能以一种理智的方式。您应该对计算任务进行编码,使其符合 Java 中断机制。基本上,这意味着偶尔检查Thread.interrupted返回值并中止true.

唯一的其他选择是笨拙的 - 并且已弃用 - Thread.stop,它可能会造成一般混乱,尤其是在池管理的线程上完成时。

于 2012-11-12T13:46:07.233 回答