守护线程不止一个?

Daemon Thread more than one?

这是一个非常简短的问题,但无法从任何地方得到答案。

可以创建多个守护线程吗?

是的。您可以简单地使用

之类的代码对其进行测试
Thread t1 = new Thread(()->{
    while(true){
        System.out.println("daemon1");
        try {
            TimeUnit.SECONDS.sleep(1);
        } catch (Exception e) {}
    }
});
t1.setDaemon(true);

Thread t2 = new Thread(()->{
    while(true){
        System.out.println("daemon2");
        try {
            TimeUnit.SECONDS.sleep(2);
        } catch (Exception e) {}
    }
});
t2.setDaemon(true);

t1.start();
t2.start();

try {
    TimeUnit.SECONDS.sleep(5);
} catch (Exception e) {}
System.out.println("main thread stopped");

输出:

daemon1
daemon2
daemon1
daemon2
daemon1
daemon1
daemon1
daemon2
daemon1
main thread stopped

如您所见,两个守护进程同时 运行。此外,由于没有其他非守护线程,应用程序停止了。