java - 在threadpoolexecutor中挂起的runnables会发生什么?

时间:2011-07-15 23:53:33

标签: java threadpool

如果runnable在threadpoolexecutor中运行时挂起,有没有办法找出它已挂起并杀死runnable? getActiveCount方法是否会考虑将“挂起”作为“主动执行”的可运行?

1 个答案:

答案 0 :(得分:4)

没有安全的方法可以杀死忙碌的线程(除了在另一个进程中运行并杀死它)你可以通过等待超时的结果来检测线程是否占用了很长时间。您还可以添加任务以在超时后取消任务,但这只会中断线程的任务,而不会中断它。

最好确定任务“挂起”并修复代码的原因,以便不会。

当您启动任务时,您存储Thread.currentThread()是一个共享变量。然后,您可以定期获取getStackTrace()以确定它正在执行的操作并将其记录下来。