我有一個通過Executors.newFixedThreadPool()
創建的Java線程池,我想使用守護進程線程。在Java線程池中使用守護進程線程不起作用
原因是這是一個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
它可以工作。
我在做什麼錯?
您認真嗎?!?花了我多年的調試嘗試和解決這個問題... – ljbade