我有一个通过它创建的 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
,它就可以工作。
我究竟做错了什么?