java - 如何知道我的 threadPoolExecutor 中哪个特定的可运行程序已死亡?

标签 java multithreading concurrency runnable threadpoolexecutor

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

  1. 知道其中一个可运行对象何时死亡,并且
  2. 知道哪个特定的可运行程序已死亡。

对此的一个解决方案是将 Runnables 包装为 Thread 对象并调用 isAlive()。线程按其应有的方式运行,但由于执行器从未调用过 aThread.start() ,所以总是返回 false ,这对我来说没有用。我考虑了让 Runnable 在 run() 函数开头触发标志的可能性,就像 this question's answer 一样。建议。跟踪已死亡的 Runnable 的最佳方法是什么?因为我的目的是向执行者提交一个线程,这基本上会做与死亡线程相同的事情。

最佳答案

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

关于java - 如何知道我的 threadPoolExecutor 中哪个特定的可运行程序已死亡?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42182434/

相关文章:

java - SQL中是否有类似 'LIKE'语句的java函数?

java - AdMob 覆盖了我的 EditText 和 TextView

Java SE 7 : alternative to try-catch for testing

java - 多个线程可以等待同一个对象吗?

jenkins - 查看 Jenkins 中的并发工作区

java - 我在 BufferedImage 中出现奇怪的黑色区域,我该如何解决这个问题?

java - 使用 jdbctemplate/jdbc for Hana db 获取按序列生成的主键

java - 多个线程如何在同一对象上拥有 "locked"(如线程转储所示)

asp.net - NHibernate 事务的不良行为

c - 提高多线程程序的速度