java - 关机还是不关机?在 ExecutorService (Java8) 中

标签 java runnable executorservice managedthreadfactory

我正在尝试了解与关闭相关的执行程序服务的行为。文档说应用程序不会终止,除非有一个 shutdown() 调用——但在这个简单的例子中。它恰好在一分钟后退出。有什么想法吗?

 Runnable r = new Runnable() {
            @Override
            public void run() {
                Print.println("do nothing");
            }
        };
        ThreadFactory TF = (Runnable run) -> new Thread(run);
        ExecutorService exec = Executors.newCachedThreadPool(TF);
        exec.submit(r);

返回这个: 11:34:00.421:Thread-0:什么都不做 构建成功(总时间:1分0秒)

最佳答案

您正在使用缓存线程池。它使线程保持 Activity 状态 60 秒,以便下一个后续任务不会浪费时间创建新的线程资源。 http://docs.oracle.com/javase/7/docs/api/java/util/concurrent/Executors.html

内部代码——

public static ExecutorService newCachedThreadPool() {
        return new ThreadPoolExecutor(0, Integer.MAX_VALUE,
                                      60L, TimeUnit.SECONDS,
                                      new SynchronousQueue<Runnable>());
    }

作业完成后,您应该调用 shutdown()。

关于java - 关机还是不关机?在 ExecutorService (Java8) 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29098117/

相关文章:

java - ExecutorService 未正确调用 Interrupt()

java - 用数字作为单词比较两个字符串

java - 可运行的 future 接口(interface)定义(jdk)

java - ExecutorService 的线程和线程池命名

java - java中根据条件动态添加执行器

java - 具有多个参数的异步函数

java - Java 省略号需要堆分配吗?

java - Spring 3 Controller 异常处理器实现问题

java - JaCoCo 在设置 log4j.configurationFactory 系统属性后停止工作

java - 可以带参数运行吗?