Java中的守护线程和普通线程有什么区别?

Java中的守护线程(daemon thread)和普通线程有什么区别?

javadaemon threads多线程
1
253
小课
小课2022-05-24 15:55
1 个回答

守护线程不会影响进程的退出,当其它线程都结束后,即使守护线程还在运行,进程也会退出。通过setDaemon(true)可将普通线程设置为守护线程,另外,在守护线程创建的线程默认也是守护线程

1public static void main(String[] args) {
2    Thread t = new Thread(() -> {
3        try {
4            Thread.sleep(3000);
5            System.out.println("Sub-thread finish");
6        } catch (InterruptedException e) {
7            e.printStackTrace();
8        }
9    });
10    //t.setDaemon(true);
11    t.start();
12    System.out.println("Main thread finish");
13}

上面的代码,没有将线程t设置为守护线程,进程会在3秒后执行完子线程后退出,输出如下。

Main thread finish
Sub-thread finish

如果取消第10行的注释,将线程t设置为守护线程,则进程会在main方法结束后直接退出,输出如下。

Main thread finish
1
已修改
小课
小课2022-05-24 16:05
你的回答

内容