hooyantsing's Blog

17_守护线程

字数统计: 305阅读时长: 1 min
2020/08/21

17 守护线程

狂神说Java 多线程详解

守护(daemon)线程

不用考虑 守护线程 是否已经执行完毕,当全部的 用户线程 执行完毕时,自动结束所有的守护线程。

  • 线程分为 用户线程守护线程
  • 虚拟机必须确保 用户线程 执行完毕
  • 虚拟机不用等待 守护线程 执行完毕
  • 守护线程如:后台记录操作日志,监控内存,垃圾回收等
    通过 setDaemon(boolean flag) 来设置。默认 false 用户线程,true

案例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
package demo2;

public class TestDeamon {
public static void main(String[] args) {
// 上帝 守护线程
Thread god = new Thread(new God());
god.setDaemon(true); // 默认 false,用户线程。当为 true 时,设置为守护线程。
// 人类 用户线程
Thread human = new Thread(new Human());

god.start();
human.start();
}

}

class God implements Runnable{
@Override
public void run() {
while (true){
System.out.println("愿上帝保佑你!");
}
}
}

class Human implements Runnable{
@Override
public void run() {
for (int i = 0; i < 30000; i++) {
System.out.println("人生已过" + i + "天。");
}
System.out.println("离开了世界,再见。");
}
}

运行结果:

f6ef9489ee8d0fd307df9ccf4bdd386b.png

用户线程执行完毕后,稍过一会,守护线程也将结束。

CATALOG
  1. 1. 17 守护线程
    1. 1.1. 守护(daemon)线程
      1. 1.1.1. 案例