1

我正在使用newFixedThreadPool()线程固定量,需要能够如何知道哪个特定的runnable在我的threadPoolExecutor中死亡?

  1. 知道什么时候可运行的一个已经死了,
  2. 知道哪些具体运行的是死了一个。

对此的一个解决方案是将Runnables作为Thread对象包装并调用isAlive()。线程运行,因为他们应该有,但因为aThread.start()永远不会被执行者调用总是返回false这是没有用的。我认为在run()函数的开始处使Runnables触发一个标志的可能性就像建议的this question's answer一样。跟踪已经死亡的Runnables的最佳方式是什么?因为我的意图是向执行者提交一个线程,这个线程基本上会和死掉的那个一样。

+0

或者这些runnables应该无限期运行?或者他们是一项任务? –

+0

它们无限运行,直到执行程序调用“shutdown”为止 –

+0

本质上,执行程序服务管理线程周期。自线程发明以来,管理线程的用户一直是个问题。我维护一个线程管理器,并在几年前写了这篇文章。也许它可以帮助你:http://coopsoft.com/ar/j2searticle.html – edharned

回答

0
+0

我可以做到这一点,如果我使用'线程',但即时通讯使用'Runnable'。 'getState'不能被Runnable访问。 –

+0

请阅读此链接http://www.avajava.com/tutorials/lessons/how-do-i-determine-if-a-thread-is-alive-or-not.html – vk3105

1

看着那@ vk3105提供的文件后,我有一个想法。我最终看着this并实施了Future future = executorService.submit(aRunnable),这样我就可以通过使用future.isDone()或者Runnable在完成之前取消future.isCancelled()来检查该可运行的命令是否已终止。

相关问题