Java中的守护线程(daemon thread)和普通线程有什么区别?
守护线程不会影响进程的退出,当其它线程都结束后,即使守护线程还在运行,进程也会退出。通过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
内容