在Threadpool中终止线程

时间:2012-11-12 13:42:59

标签: java threadpool

我有一个可能数量的线程的应用程序。基本上,线程应该工作:

  • 主线
  • CalculationThread
  • CalculationThread
  • CalculationThread

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

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

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

1 个答案:

答案 0 :(得分:1)

如果没有线程的合作,你不能强制执行超时,至少不是理智的方式。您应该编写计算任务的代码,以便它们符合Java中断机制。基本上,这意味着偶尔会检查Thread.interrupted返回值并在true上中止。

唯一的另一个选择是ham-handed - 并且已弃用 - Thread.stop,这可能造成一般混乱,尤其是在池管理线程上完成时。