守护线程的特点
- 线程分为用户线程和守护线程
- 程序必须等待用户线程结束
- 程序无需等待守护线程结束
- 典型的守护线程有,后台操纵日志,监控内存,GC垃圾回收
守护线程的Demo展示
public class DaemonDemo {
public static void main(String[] args) {
Thread thread1 = new Thread(new People());
Thread thread2 = new Thread(new God());
thread2.setDaemon(true);
thread1.setPriority(9);
thread1.start();
thread2.start();
}
}
class People implements Runnable{
@Override
public void run() {
for (int i = 1; i < 30; i++) {
System.out.println("张三活了"+i+"天");
}
System.out.println("张三死了");
}
}
class God implements Runnable{
@Override
public void run() {
while (true)
{
System.out.println("上帝与你同在");
}
}
}
本案例中,我们让People线程和God线程分别跑起来。不同的是我们设置人类的Proirity(优先级)设为9,把上帝的Daemon(守护线程)设置为True
运行的结果必然是People线程先执行。人类线程结束之后。God线程又独自跑了很久很久,直到整个进程都退出,守护线程才结束。
这便是守护线程的特点!