如何知道我的threadPoolExecutor中哪个特定的runnable已经死了?

时间:2017-02-11 23:25:25

标签: java multithreading concurrency runnable threadpoolexecutor

我正在使用newFixedThreadPool()运行固定数量的线程,并且需要能够

  1. 知道其中一个runnables已经死亡,
  2. 知道哪个特定的可运行是死亡的。
  3. 对此的一个解决方案是将Runnables作为Thread对象包装并调用isAlive()。线程按原样运行,但由于执行程序从未调用aThread.start(),因此始终返回false这对我没用。我考虑过让Runnables在run()函数的开头触发一个标志的可能性,就像this question's answer建议的那样。什么是追踪已经死亡的Runnables的最佳方法?因为我的目的是向执行者提交一个主题,即基本上与死亡的主题相同。

2 个答案:

答案 0 :(得分:1)

在查看@ vk3105提供的文档后,我有了一个想法。我最终查看了this并实施了Future future = executorService.submit(aRunnable),以便我可以使用future.isDone()检查是否终止了runnable,或者在运行完成之前取消了Runnable {{1} }。

答案 1 :(得分:0)