Java 在线程池中选择要关闭的线程

Java 在线程池中选择要关闭的线程,java,multithreading,threadpool,shutdown,Java,Multithreading,Threadpool,Shutdown,我目前有一个线程池,其中有2个固定线程,每个线程再创建2个执行任务的线程。我已经将其设置为可以在需要时传递停止线程的命令的位置 我想问的是,是否有办法从线程池中选择特定的固定线程并将其关闭。 我已经设置好了关闭线程的一切,只需要选择两个线程中的一个并关闭它,让另一个继续运行 如果有更好的方法,我愿意接受其他选择 谢谢 我想问的是,是否有办法从线程池中选择一个特定的固定线程并将其关闭 不是从线程池本身,不是。请记住,您不想杀死线程池中的线程,因为可能有更多的任务要执行 如果有更好的方法,我愿意接受

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

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

我已经设置好了关闭线程的一切,只需要选择两个线程中的一个并关闭它,让另一个继续运行

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

谢谢

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

不是从线程池本身,不是。请记住,您不想杀死线程池中的线程,因为可能有更多的任务要执行

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

我将有一个
volatile boolean
,它将在相关任务中被检查,以便您可以使其退出

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

在线程池级别,您仅有的类似操作是使用
shutdownNow()
Future.cancel(true)
中断所有正在运行的线程。这两种方法都会中断设置中断标志的线程,并导致抛出
InterruptedException
的方法执行此操作。

谢谢,这真的很有帮助。有一个问题是,我如何指定要关闭的任务?对线程来说还是比较新的。我假设这两个线程在@user2448754运行不同的任务,因此一个任务将有布尔测试,而另一个不会。如果不是这种情况,则可以使用
AtomicBoolean
并执行类似于
shutdownspecictask.compareAndSet(true,false)
的操作,该操作只会关闭其中一个。它们使用相同的代码执行作业,但它们执行的作业会有所不同。