gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 16:16:12 25 4
gpt4 key购买 nike

我有一个通过 Executors.newFixedThreadPool() 创建的 Java 线程池,我想使用守护线程。

原因是这是一个 GUI 应用程序,我不希望这些线程导致程序在窗口关闭后继续运行。

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

类(class)是这样的:

import java.util.concurrent.ThreadFactory;

public class DaemonThreadFactory implements ThreadFactory{

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

}

由于某种原因,当我将 DaemonThreadFactoryExecutors.newFixedThreadPool() 一起使用时,我的排队任务都没有被执行。如果我将其改回常规的 ThreadFactory ,它就可以工作。

我做错了什么?

最佳答案

您没有将 Runnable 传递给线程,因此没有要执行的代码:

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

关于java - 在 Java 线程池中使用守护线程不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12691786/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com