从头认识java-18.2 基本的线程机制(5)-守护线程与非守护线程
来源:互联网 发布:java 延时执行方法 编辑:程序博客网 时间:2024/05/22 03:19
这一章节我们来讨论一下守护线程与非守护线程。
1.什么是守护线程?什么是非守护线程?
非守护线程:Java虚拟机在它所有非守护线程已经离开后自动离开。
守护线程:守护线程则是用来服务用户线程的,如果没有其他用户线程在运行,那么就没有可服务对象,也就没有理由继续下去。
2.相同点
大家都是线程,其实可以互相切换
3.不同点:退出的时间点
退出的先后顺序:
非守护线程->守护线程->jvm
4.注意点:
(1)设置守护线程需要在start之前,否在抛异常
package com.ray.ch17;public class Test {public static void main(String[] args) {WritePaper writePaper = new WritePaper();Thread thread = new Thread(writePaper);thread.start();thread.setDaemon(true);}}class WritePaper implements Runnable {@Overridepublic void run() {System.out.println("run");}}
输出:
run
Exception in thread "main" java.lang.IllegalThreadStateException
at java.lang.Thread.setDaemon(Thread.java:1275)
at com.ray.ch17.Test.main(Test.java:9)
(2)由于上面第三点所说的退出时间节点问题,因此会出现下面的情况
package com.ray.ch17;public class Test {public static void main(String[] args) {WritePaper writePaper = new WritePaper();Thread thread = new Thread(writePaper);thread.setDaemon(true);thread.start();}}class WritePaper implements Runnable {@Overridepublic void run() {System.out.println("run");}}
(无)
其实这里根本就没有执行相应的语句,因为守护线程知道现在没有需要服务的非守护线程(用户自定义线程),就直接退出了。
如果想执行程序里面的输出,则不要设置守护:
package com.ray.ch17;public class Test {public static void main(String[] args) {WritePaper writePaper = new WritePaper();Thread thread = new Thread(writePaper);thread.start();}}class WritePaper implements Runnable {@Overridepublic void run() {System.out.println("run");}}
输出:
run
(3)守护线程与非守护线程其实是没有本质区别,可以相互切换
package com.ray.ch17;public class Test {public static void main(String[] args) {WritePaper writePaper = new WritePaper();Thread thread = new Thread(writePaper);thread.setDaemon(true);thread.setDaemon(false);thread.start();}}class WritePaper implements Runnable {@Overridepublic void run() {System.out.println("run");}}
输出:
run
总结:这一章节主要介绍了守护线程与非守护线程的区别与联系。
这一章节就到这里,谢谢。
-----------------------------------
目录
0 0
- 从头认识java-18.2 基本的线程机制(5)-守护线程与非守护线程
- Java守护线程与非守护线程
- java-守护线程与非守护线程
- Java的守护线程与非守护线程(即前台线程与后台线程)
- java的守护线程与非守护线程
- java的守护线程与非守护线程
- java的守护线程与非守护线程
- java的守护线程与非守护线程
- Java的守护线程与非守护线程
- java的守护线程与非守护线程(转)
- java的守护线程与非守护线程
- java的守护线程与非守护线程
- java的守护线程与非守护线程
- java的守护线程与非守护线程
- Java的守护线程与非守护线程
- java的守护线程与非守护线程
- java的守护线程与非守护线程
- java的守护线程与非守护线程
- Spring data 简介
- Eclipse格式化代码默认长度
- Redis作为缓存自我总结
- WebStorm 7注册码
- 四柱加强版汉诺塔HanoiTower----是甜蜜还是烦恼
- 从头认识java-18.2 基本的线程机制(5)-守护线程与非守护线程
- 计算机语言基础
- php htmlentities和htmlspecialchars 的区别
- Delphi ListView基本用法大全
- 2301: [HAOI2011]Problem b|莫比乌斯反演
- SSH——Hibernate初学者之旅(三)
- oracle创建表空间,用户步骤
- Convoy Protection Jammers 868W
- spring data Jpa 环境搭建