标签:daemon Thread 用户 boolean 线程 守护
线程分为用户线程和守护线程
守护线程是用来守护用户线程的
守护线程可以用来做一些记录日志,监控内存,垃圾回收等工作
daemon属性
Thread类中有一个daemon属性,默认值为false,也就是非守护线程,即用户线程,当daemon值为true时,该线程为守护线程
private boolean daemon = false;
设置守护线程
Thread类提供了setDaemon(boolean)方法,设置daemon值为true即将线程设置为守护线程
public final void setDaemon(boolean on)
查看线程是否为守护线程
Thread类提供了isDaemon()方法获取daeman属性的值
public final boolean isDaemon() {
return daemon;
}
守护线程伴随着用户线程存在
// 定义一个守护线程
Thread thread1 = new Thread(new Runnable() {
@Override
public void run() {
while (true) {
try {
Thread.sleep(100);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println("我是一个守护线程!!!");
}
}
});
// 设置成守护线程
thread1.setDaemon(true);
// 启动守护线程
thread1.start();
// 定义一个用户线程
new Thread(new Runnable() {
@Override
public void run() {
for (int i = 0; i < 10; i++) {
try {
Thread.sleep(100);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println("我是用户线程!");
}
System.out.println("用户线程执行完毕!");
}
}).start();
运行结果
我是一个守护线程!!!
我是用户线程!
我是用户线程!
我是一个守护线程!!!
我是用户线程!
我是一个守护线程!!!
我是一个守护线程!!!
我是用户线程!
我是一个守护线程!!!
我是用户线程!
我是一个守护线程!!!
我是用户线程!
我是一个守护线程!!!
我是用户线程!
我是用户线程!
我是一个守护线程!!!
我是一个守护线程!!!
我是用户线程!
我是用户线程!
用户线程执行完毕!
我是一个守护线程!!!
代码中守护线程是死循环,但是守护线程自己停下来了
可以看出,守护线程会随着用户线程执行完毕而完成自己的使命,可能在用户线程执行完立即停止,也可能执行一段时间后停止,总之用户线程不在了,守护线程会自动销毁。
标签:daemon,Thread,用户,boolean,线程,守护 来源: https://www.cnblogs.com/qixioa/p/13645970.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。