多线程基础-守护线程与非守护线程
守护线程与非守护线程
- 1、线程分类:
- 2、程序线程:
- 3、主线程与非守护线程
- 4、主线程与守护线程
- 5、主线程、守护线程、非守护线程
- 6、 java虚拟机是如何退出的?
1、线程分类:
守护线程 非守护线程
2、程序线程:
主线程 用户线程 gc线程**主线程:**一种特殊的非守护线程,但是并不能被设置为守护线程。如果强制设置为守护进行会出现以下Exception
**用户线程:**在主线程中创建的线程。该创建的线程可以被设置为守护线程或者非守护线程
**GC线程:**守护线程
3、主线程与非守护线程
package com.shebao.thread;
/*** @author: zhaoyihang* @Date: 2020/9/11 8:49 上午* @Description: 守护与非守护线程*/
public class ThreadDemo6 {public static void main(String[] args) {Thread t1 = new Thread(new Runnable() {@Overridepublic void run() {for(int i = 1; i < 10;i++){try{Thread.sleep(300);}catch (Exception e){Thread.currentThread().interrupt();}System.out.println(Thread.currentThread().getName()+":"+i);}}});t1.setName("非守护线程");t1.start();for(int i = 1;i<=5;i++){try{System.out.println(Thread.currentThread().getName()+":"+i);Thread.sleep(100);}catch (Exception e){Thread.currentThread().interrupt();}}System.out.println("主线程执行完毕");}
}
总结:主线程结束非守护线程仍然可以继续运行。
4、主线程与守护线程
package com.shebao.thread;
/*** @author: zhaoyihang* @Date: 2020/9/11 8:49 上午* @Description: 守护与非守护线程*/
public class ThreadDemo6 {public static void main(String[] args) {Thread t2 = new Thread(new Runnable() {@Overridepublic void run() {for(int i = 1; i < 10;i++){try{Thread.sleep(300);}catch (Exception e){Thread.currentThread().interrupt();}System.out.println(Thread.currentThread().getName()+":"+i);}}});t2.setName("守护线程");t2.setDaemon(true);t2.start();for(int i = 1;i<=5;i++){try{System.out.println(Thread.currentThread().getName()+":"+i);Thread.sleep(100);}catch (Exception e){Thread.currentThread().interrupt();}}System.out.println("主线程执行完毕");}
}
总结:主线程结束,守护线程也立即结束(稍等,这句话稍微有点漏洞后面在进行解析)
5、主线程、守护线程、非守护线程
package com.shebao.thread;
/*** @author: zhaoyihang* @Date: 2020/9/11 8:49 上午* @Description: 守护与非守护线程*/
public class ThreadDemo6 {public static void main(String[] args) {Thread t1 = new Thread(new Runnable() {@Overridepublic void run() {for(int i = 1; i < 10;i++){try{Thread.sleep(300);}catch (Exception e){Thread.currentThread().interrupt();}System.out.println(Thread.currentThread().getName()+":"+i);}}});t1.setName("非守护线程");t1.start();Thread t2 = new Thread(new Runnable() {@Overridepublic void run() {for(int i = 1; i < 10;i++){try{Thread.sleep(300);}catch (Exception e){Thread.currentThread().interrupt();}System.out.println(Thread.currentThread().getName()+":"+i);}}});t2.setName("守护线程");t2.setDaemon(true);t2.start();for(int i = 1;i<=5;i++){try{System.out.println(Thread.currentThread().getName()+":"+i);Thread.sleep(100);}catch (Exception e){Thread.currentThread().interrupt();}}System.out.println("主线程执行完毕");}
}
从上述可以看出,main线程结束守护线程并没有结束,给上述总结存在相驳。
6、 java虚拟机是如何退出的?
如果虚拟机中剩下的都是守护线程,那么JAVA虚拟机不会管守护线程都会退出。如果线程中还有存活的非守护线程,虚拟机就会等待非守护线程执行结束,在等待的过程中守护线程也可以抢占CPU执行。
多线程基础-守护线程与非守护线程相关推荐
- 守护线程与非守护线程的区别
守护线程与非守护线程 最近在看多线程的Timer章节,发现运用到了守护线程,感觉Java的基础知识还是需要补充. Java分为两种线程:用户线程和守护线程 所谓守护线程是指在程序运行的时候在后台提供一 ...
- Java中的守护线程和非守护线程(转载)
<什么是守护线程,什么是非守护线程> Java有两种Thread:"守护线程Daemon"(守护线程)与"用户线程User"(非守护线程). 用户线 ...
- 守护线程和非守护线程
直觉上来讲,守护线程和main相关 Java中有两种线程,一种是用户线程,另一种是守护线程. 用户线程是指用户自定义创建的线程,主线程停止,用户线程不会停止(另一条执行路径) 守护线程当进程不存在或主 ...
- java守护线程与非守护线程
java守护线程与非守护线程 代码逻辑 当前网上结论 1.主线程结束,守护线程跟着结束 2.只要存在任何一个非守护线程,守护线程就全部工作 测试代码 第一段代码 第二段代码 结论 代码逻辑 代码里面包 ...
- 守护线程是什么?守护线程和非守护线程的区别是?守护线程的作用是?
守护线程是区别于用户线程,用户线程即我们手动创建的线程,而守护线程是程序运行的时候在后台提供一种通用服务的线程.垃圾回收线程就是典型的守护线程. 守护线程和非守护线程的区别是 public stati ...
- java的守护进程与非守护进程
java的守护进程与非守护进程 最近重新研究Java基础知识,发现以前太多知识知识略略带过了,比较说Java的线程机制,在Java中有两类线程: User Thread(用户线程).Daemon Th ...
- Android开发之UI线程和非UI线程
这里又是老生畅谈的话了,前边已经有多篇文章针对线程进行探究解释,Android开发过程中线程的体现更是淋漓尽致.Android开发过程中涉及到的线程从大类上分可以归为两类:UI线程和非UI线程.本篇就 ...
- SWT的UI线程和非UI线程
为什么80%的码农都做不了架构师?>>> 要理解UI线程,先要了解一下"消息循环"这个概念.链接是百度百科上的条目,简单地说,操作系统把用户界面上的每个操作 ...
- 并发编程之多线程基础-守护线程与非守护线程(四)
守护线程概念: 只要当前JVM实例中尚存在任何一个非守护线程没有结束, 守护线程就全部工作; 只有当最后一个非守护线程结 束时, 守护线程随着 JVM 一同结束工作. 守护线程最典型的应用就是 GC ...
最新文章
- 一个基于长数据转化为宽数据的小软件---data_tran.exe
- python读取txt中的一列称为,从python中的文本文件读取特定列
- pynvml 查看GPU已使用的显存
- 创建SSH keys
- 微服务部署HTTP反向代理、负载均衡工具Træfɪk
- Servlet的部分request请求处理
- 微型计算机原理应用总结,微机原理总结
- 毕业论文选题三步搞定!
- [转载] 新兵训练营系列课程——海量数据存储基础
- 算法的封装与切换——策略模式
- 配置说明_温室移动喷灌机简介以及配置说明
- 流计算技术实战 - 超大维表问题
- java list to byte_java – 将ArrayList转换为byte []
- python装饰器有几种_Python装饰器使用你可能不知道的几种姿势
- IIS无法启动,提示另外一个程序正在使用此文件
- 我在蚂蚁金服做后端:那些坚持在一个岗位做八年的人,后来怎么样了?...
- 《Temporal AA , SMAA and MSAA》
- 德云一哥岳云鹏,准备录制河南和东方卫视节目,央视春晚还参加吗
- 淘宝Push智能文案生成
- flexpaper组件中关于隐藏真实的swf 地址下载