守护线程和用户线程的区别
必须要用户线程结束后虚拟机JVM才会停止,但是如果守护线程没结束,JVM照样停止
守护线程的优先级比较低
守护线程一般用于垃圾回收
将线程变成守护线程的方法
使用setDaemon方法
thread.setDaemon(true);//默认false表示是用户线程,正常的线程都是用户线程
实例:上帝守护你
public class TestDeamon {
public static void main(String[] args) {
God god = new God();
You you = new You();
Thread thread = new Thread(god);
thread.setDaemon(true);//默认false表示是用户线程,正常的线程都是用户线程
thread.start();//上帝守护线程启动
new Thread(you).start();//你,用户线程启动
}
}
//上帝
class God implements Runnable{
@Override
public void run() {
while (true){
System.out.println("上帝守护着你");
}
}
}
//你
class You implements Runnable{
@Override
public void run() {
for (int i = 0; i < 36500; i++) {
System.out.println("你一生都开心的活着");
}
System.out.println("=======goodbye!world!=======");//Hello,world!
}
}
运行结果
在用户线程结束之前,守护线程和用户线程交替执行。
在用户线程结束之后,守护线程执行一会儿后(理应立即停止,继续执行是因为JVM虚拟机停止需要时间),程序终止。