我有以下代码
ExecutorService es = Executors.newSingleThreadExecutor();
es.submit(new Runnable() {
@Override public void run()
{
while(true);
}
});
es.shutdownNow();
问题是在我调用 shutdownNow 后 ExecutorService 没有关闭。文档说它会尝试停止所有正在执行的任务。
那么为什么ES无法关机呢?
最佳答案
我这样做了并且成功了:
ExecutorService es = Executors.newSingleThreadExecutor();
es.submit(new Runnable() {
@Override public void run()
{
while(!Thread.currentThread().isInterrupted());
}
});
es.shutdownNow();
原因是 shutdownNow
没有终止线程。它只会中断所有正在运行的线程。
关于java - ExecutorService 没有关闭,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16514606/