【多线程】守护线程 Daemon
守护线程 Daemon
- 线程分为用户线程和守护线程
- 虚拟机必须确保用户线程执行完毕
- 虚拟机不用等待守护线程执行完毕
- 如,后台记录操作日志,监控内存,垃圾回收等待..
代码示例:
/**
* @Description 测试守护线程,上帝保佑着你
* @Author hzx
* @Date 2022-03-27
*/
public class TestDaemon {
public static void main(String[] args) {
TestGod god = new TestGod();
TestYou you = new TestYou();
Thread thread = new Thread(god);
thread.setDaemon(true); //默认是false,表示是用户线程,正常的线程都是用户线程...
thread.start(); //守护线程启动
new Thread(you).start(); //你,用户线程启动
}
}
class TestGod implements Runnable {
@Override
public void run() {
while (true) {
try {
Thread.sleep(10);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println("上帝保佑着你");
}
}
}
class TestYou implements Runnable {
@Override
public void run() {
for (int i = 0; i < 10; i++) {
try {
Thread.sleep(10);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println("你开心的活了"+i+"个纪元");
}
System.out.println("===========Goodbye!World!===========");
}
}
执行结果:
上帝保佑着你
你开心的活了0个纪元
上帝保佑着你
你开心的活了1个纪元
上帝保佑着你
你开心的活了2个纪元
上帝保佑着你
你开心的活了3个纪元
上帝保佑着你
你开心的活了4个纪元
你开心的活了5个纪元
上帝保佑着你
你开心的活了6个纪元
上帝保佑着你
上帝保佑着你
你开心的活了7个纪元
上帝保佑着你
你开心的活了8个纪元
你开心的活了9个纪元
===========Goodbye!World!===========
上帝保佑着你
- 一个守护线程什么时候结束不取决于主线程什么时候结束。守护线程的作用是在后台运行任务,只要还有一个以上非守护线程没有结束(即便此时主线程已结束),程序就不会结束。
- 反过来,当所有非守护线程都结束了后,即便还有未结束的守护线程,系统也会马上结束这些守护线程,然后结束程序。
思考问题:当非守护线程执行结束的时候,为什么守护线程还会再接着执行一会儿再结束?
解释:单一线程当然是主程序语句结束,主程序结束,多线程是并行状态,主线程语句执行结束,其他线程执行时间可能大于主线程执行时间,所以主线程并没有关闭,等其他线程结束的收尾工作,结束线程也需要时间。
【多线程】守护线程 Daemon的更多相关文章
- [19/04/08-星期一] 多线程_线程的优先级(Priority) 和 守护线程(Daemon)
一.概念 1. 处于就绪状态的线程,会进入“就绪队列”等待JVM来挑选. 2. 线程的优先级用数字表示,范围从1到10,一个线程的缺省优先级是5. 3. 使用下列方法获得或设置线程对象的优先级. in ...
- java并发编程学习: 守护线程(Daemon Thread)
在正式理解这个概念前,先把 守护线程 与 守护进程 这二个极其相似的说法区分开,守护进程通常是为了防止某些应用因各种意外原因退出,而在后台独立运行的系统服务或应用程序. 比如:我们开发了一个邮件发送程 ...
- JAVA并发编程——守护线程(Daemon Thread)
在Java中有两类线程:用户线程 (User Thread).守护线程 (Daemon Thread). 所谓守护 线程,是指在程序运行的时候在后台提供一种通用服务的线程,比如垃圾回收线程就是一个很称 ...
- 守护线程(Daemon Thread)
在Java中有两类线程:用户线程 (User Thread).守护线程 (Daemon Thread). 所谓守护 线程,是指在程序运行的时候在后台提供一种通用服务的线程,比如垃圾回收线程就是一个很称 ...
- JAVA - 守护线程(Daemon Thread)
转载自:http://www.cnblogs.com/luochengor/archive/2011/08/11/2134818.html 在Java中有两类线程:用户线程 (User Thread) ...
- 用户线程 (User Thread)、守护线程 (Daemon Thread)
在Java中有两类线程:用户线程 (User Thread).守护线程 (Daemon Thread). 所谓守护 线程,是指在程序运行的时候在后台提供一种通用服务的线程,比如垃圾回收线程就是一个很称 ...
- java线程 - 多线程 - 守护线程
1.多线程执行者/处理类 都是Runnable的实现类(如自定义类实现Runnable 或 java原生的Thread.FutureTask),但最后都必须封装成Thread线程类由Thread.st ...
- 并发编程~~~多线程~~~守护线程, 互斥锁, 死锁现象与递归锁, 信号量 (Semaphore), GIL全局解释器锁
一 守护线程 from threading import Thread import time def foo(): print(123) time.sleep(1) print('end123') ...
- python 并发编程 多线程 守护线程
做完工作这个进程就应该被销毁 单线程情况: 一个进程 ,默认有一个主线程 ,这个主线程执行完代码后 ,就应该自动销毁.然后进程也销毁. 多线程情况: 主线程代表进程结束 一个进程可以开多个线程,默认开 ...
随机推荐
- fsdfd
static int kWeiOfVal(int val, int k) { int n = 1; int temVal = val; int result; while (1) { temVal = ...
- 谈谈关于CSS中transform属性之scale
谈谈关于scale属性 scale是什么? 根据W3C定义 ,scale主要是进行缩放和转化: scale能做什么? 1.1px细线 <div class="wrap"> ...
- 让你熟知jquery见鬼去吧
$是jquery最具代表的符号,当然php也是,但是二者不能同日而语;不得不说jquery的选择器是大家赞不绝口的,在它1.x版本中对ie兼容性是最好的,这要归功于$选择器; 现在呢,html5的降临 ...
- 纯css模拟电子钟
先看效果 演示地址: https://yueminhu.github.io/di...点击左边拉环切换夜间模式. 用到了伪元素生成数字的小三角`currentColor和color: inherit` ...
- js压缩图片到2m以下
用的canvas.这个问题测试妹子反馈了好几次bug,解决了好多次,虽然用了比较僵硬的办法,但总算最终解决了. 因为php的同事说,页面上的图片要直接调用七牛的接口上传到七牛,所以后端那边不能处理,必 ...
- CentOS 7.9 网络配置
vi /etc/sysconfig/network-scripts/ifcfg-ens33 (45条消息) CentOS 7.9 网络配置_$青的博客-CSDN博客_centos7.9网卡配置
- Java将字符串的首字母转换大小写
//首字母转小写public static String toLowerCaseFirstOne(String s){ if(Character.isLowerCase(s.charAt(0))) ...
- mysql绿色版安装以及遇到的问题
下载mysql绿色版 放在如下文件夹 D:\javaSkill\mysql 修改my.ini文件内容: [mysql] default-character-set=utf8 [mysqld] bas ...
- input禁止输入空格 以及 input各种输入限制
1.禁止输入空格 方法1: oninput="value=value.replace(/\s+/g,'')" 在 ios中 用手机原生键盘 输入 会出现bug, 就是 ...
- pip——重新安装
原因 没有用管理员的权限安装.导致失败. 并且pip还被卸载了. 使用环境 win10 重新安装pip python -m ensurepip 更新pip 管理员打开cmd python -m pip ...