在Java线程池中使用守护程序线程不起作用

ljb*_*ade 2 java multithreading threadpool

我有一个Java Executors.newFixedThreadPool()线程池通过我想要使​​用守护程序线程创建.

原因是这是一个GUI应用程序,我不希望这些线程导致程序在Window关闭后保持运行.

我实现了一个自定义ThreadFactory设置Thread.setDaemon(true)在它创建的线程上.

这个课是这样的:

import java.util.concurrent.ThreadFactory;

public class DaemonThreadFactory implements ThreadFactory{

    public Thread newThread(Runnable runnable){
        Thread thread = new Thread();
        thread.setDaemon(true);
        return thread;
    }

}
Run Code Online (Sandbox Code Playgroud)

出于某种原因,当我使用DaemonThreadFactory与Executors.newFixedThreadPool()关我排队任务的执行.如果我将它改回常规则ThreadFactory可行.

我究竟做错了什么?

Tud*_*dor 5

你没有传递Runnable给线程,因此没有代码可以执行:

@Override
public Thread newThread(Runnable runnable)
{
    Thread thread = new Thread(runnable);
    thread.setDaemon(true);
    return thread;
}
Run Code Online (Sandbox Code Playgroud)