我有一个通过它创建的 Java线程池Executors.newFixedThreadPool(),我想使用守护线程。
原因是这是一个 GUI 应用程序,我不希望这些线程在窗口关闭后导致程序继续运行。
我实现了一个自定义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;
}
}
出于某种原因,当我使用DaemonThreadFactory时Executors.newFixedThreadPool()没有执行任何排队的任务。如果我把它改回常规ThreadFactory,它就可以工作。
我究竟做错了什么?