在线程池中选择一个线程来关闭

时间:2013-11-18 19:02:27

标签: java multithreading threadpool shutdown

我目前有一个带有2个固定线程的线程池,每个线程创建另外2个执行任务的线程。我已将它设置为可以在需要时传递命令以停止线程的位置。

我要问的是,是否有办法从线程池中选择一个特定的固定线程并将其关闭。

我已经设置了所有设置来关闭线程只需要一种方法来选择两个线程中的一个并关闭它并让另一个继续运行。

如果有更好的方法,我会接受其他选择。

由于

1 个答案:

答案 0 :(得分:1)

  

我要问的是,是否有办法从线程池中选择一个特定的固定线程并将其关闭。

不是来自游泳池本身,不是。请记住,您不希望终止线程池中的线程,因为可能需要执行更多任务。

  

如果有更好的方法,我会接受其他选择。

我在相关任务中检查了volatile boolean,因此您可以让它退出。

private volatile boolean shutdownSpecificTask;
...
// then inside of your task you'd do something like
while (!shutdownSpecificTask) {
   ...
}

在线程池级别上,这样的唯一操作是使用shutdownNow()Future.cancel(true)中断所有正在运行的线程。这两个都会中断设置中断标志的线程,并导致抛出InterruptedException的方法。