守护线程与非守护线程

  • 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执行。

多线程基础-守护线程与非守护线程相关推荐

  1. 守护线程与非守护线程的区别

    守护线程与非守护线程 最近在看多线程的Timer章节,发现运用到了守护线程,感觉Java的基础知识还是需要补充. Java分为两种线程:用户线程和守护线程 所谓守护线程是指在程序运行的时候在后台提供一 ...

  2. Java中的守护线程和非守护线程(转载)

    <什么是守护线程,什么是非守护线程> Java有两种Thread:"守护线程Daemon"(守护线程)与"用户线程User"(非守护线程). 用户线 ...

  3. 守护线程和非守护线程

    直觉上来讲,守护线程和main相关 Java中有两种线程,一种是用户线程,另一种是守护线程. 用户线程是指用户自定义创建的线程,主线程停止,用户线程不会停止(另一条执行路径) 守护线程当进程不存在或主 ...

  4. java守护线程与非守护线程

    java守护线程与非守护线程 代码逻辑 当前网上结论 1.主线程结束,守护线程跟着结束 2.只要存在任何一个非守护线程,守护线程就全部工作 测试代码 第一段代码 第二段代码 结论 代码逻辑 代码里面包 ...

  5. 守护线程是什么?守护线程和非守护线程的区别是?守护线程的作用是?

    守护线程是区别于用户线程,用户线程即我们手动创建的线程,而守护线程是程序运行的时候在后台提供一种通用服务的线程.垃圾回收线程就是典型的守护线程. 守护线程和非守护线程的区别是 public stati ...

  6. java的守护进程与非守护进程

    java的守护进程与非守护进程 最近重新研究Java基础知识,发现以前太多知识知识略略带过了,比较说Java的线程机制,在Java中有两类线程: User Thread(用户线程).Daemon Th ...

  7. Android开发之UI线程和非UI线程

    这里又是老生畅谈的话了,前边已经有多篇文章针对线程进行探究解释,Android开发过程中线程的体现更是淋漓尽致.Android开发过程中涉及到的线程从大类上分可以归为两类:UI线程和非UI线程.本篇就 ...

  8. SWT的UI线程和非UI线程

    为什么80%的码农都做不了架构师?>>>    要理解UI线程,先要了解一下"消息循环"这个概念.链接是百度百科上的条目,简单地说,操作系统把用户界面上的每个操作 ...

  9. 并发编程之多线程基础-守护线程与非守护线程(四)

    守护线程概念: 只要当前JVM实例中尚存在任何一个非守护线程没有结束, 守护线程就全部工作; 只有当最后一个非守护线程结 束时, 守护线程随着 JVM 一同结束工作. 守护线程最典型的应用就是 GC ...

最新文章

  1. 一个基于长数据转化为宽数据的小软件---data_tran.exe
  2. python读取txt中的一列称为,从python中的文本文件读取特定列
  3. pynvml 查看GPU已使用的显存
  4. 创建SSH keys
  5. 微服务部署HTTP反向代理、负载均衡工具Træfɪk
  6. Servlet的部分request请求处理
  7. 微型计算机原理应用总结,微机原理总结
  8. 毕业论文选题三步搞定!
  9. [转载] 新兵训练营系列课程——海量数据存储基础
  10. 算法的封装与切换——策略模式
  11. 配置说明_温室移动喷灌机简介以及配置说明
  12. 流计算技术实战 - 超大维表问题
  13. java list to byte_java – 将ArrayList转换为byte []
  14. python装饰器有几种_Python装饰器使用你可能不知道的几种姿势
  15. IIS无法启动,提示另外一个程序正在使用此文件
  16. 我在蚂蚁金服做后端:那些坚持在一个岗位做八年的人,后来怎么样了?...
  17. 《Temporal AA , SMAA and MSAA》
  18. 德云一哥岳云鹏,准备录制河南和东方卫视节目,央视春晚还参加吗
  19. 淘宝Push智能文案生成
  20. flexpaper组件中关于隐藏真实的swf 地址下载

热门文章

  1. 基于Arduino设计的OLED游戏机
  2. MES解决方案赋能「汽车改装行业」
  3. 系统中计算机应用上机,管理系统中计算机应用上机题1
  4. C# Async/Await原理剖析
  5. Java实现蜘蛛纸牌
  6. 【R】葡萄牙森林火灾(数据可视化回归分析)
  7. BUGKU CFT初学之WEB
  8. TI OMAP Bootloader Project 关于启动过程
  9. 秃顶之路-Day19
  10. CRM、ERP、SCM的区别