java - ExecutorService 没有关闭

标签 java multithreading

我有以下代码

    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/

相关文章:

java - 更改 TextView 背景后看不到 View

java - 使用来自外部类的信息 : Prisoner's Dilemma

java - 在eclipse上创建android项目时出错

multithreading - 多重编程,多线程和并行处理?

java - 如何在不锁定的情况下同步对象?

C++ 多线程 : Do I need mutex for constructor and destructor?

java - 包括 JSP 页面忽略自定义 header

java - 如何处理 ANTLR 语法规则中的歧义标记?

java - 当高吞吐量(3GB/s)文件系统可用时,如何在 Java 中使用多线程读取文件

asp.net - 使用 AJAX 或多线程加速页面加载