守护线程与非守护线程

最近在看多线程的Timer章节,发现运用到了守护线程,感觉Java的基础知识还是需要补充。

Java分为两种线程:用户线程和守护线程

所谓守护线程是指在程序运行的时候在后台提供一种通用服务的线程,比如垃圾回收线程就是一个很称职的守护者,并且这种线程并不属于程序中不可或缺的部分。因 此,当所有的非守护线程结束时,程序也就终止了,同时会杀死进程中的所有守护线程。反过来说,只要任何非守护线程还在运行,程序就不会终止。

守护线程和用户线程的没啥本质的区别:唯一的不同之处就在于虚拟机的离开:如果用户线程已经全部退出运行了,只剩下守护线程存在了,虚拟机也就退出了。 因为没有了被守护者,守护线程也就没有工作可做了,也就没有继续运行程序的必要了。

将线程转换为守护线程可以通过调用Thread对象的setDaemon(true)方法来实现。在使用守护线程时需要注意一下几点:

(1) thread.setDaemon(true)必须在thread.start()之前设置,否则会跑出一个IllegalThreadStateException异常。你不能把正在运行的常规线程设置为守护线程。

(2) 在Daemon线程中产生的新线程也是Daemon的。

(3) 守护线程应该永远不去访问固有资源,如文件、数据库,因为它会在任何时候甚至在一个操作的中间发生中断。

使用:

Runnable tr=new TestRunnable();

Thread thread=new Thread(tr);

thread.setDaemon(true); //设置守护线程

thread.start(); //开始执行分进程

转载于:https://www.cnblogs.com/lemon-flm/p/8086938.html

守护线程与非守护线程的区别相关推荐

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

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

  2. 守护线程和非守护线程

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

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

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

  4. 多线程基础-守护线程与非守护线程

    守护线程与非守护线程 1.线程分类: 2.程序线程: 3.主线程与非守护线程 4.主线程与守护线程 5.主线程.守护线程.非守护线程 6. java虚拟机是如何退出的? 1.线程分类: 守护线程 非守 ...

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

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

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

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

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

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

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

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

  9. Java的守护线程和非守护线程

    一.守护线程 java分为两种线程:用户线程和守护线程 守护线程是指在程序运行的时候在后台提供一种通用服务的线程,比如垃圾回收线程就是一个很称职的守护者,并且这种线程并不属于程序中不可或缺的部分.因此 ...

最新文章

  1. 发布一个用于WinCE的矢量图控件
  2. MySQL 优化上来就分库分表?面试官:根本不懂底层原理!
  3. s5p4418 Android 4.4.2 驱动层 HAL层 服务层 应用层 开发流程记录(二 硬件抽象层HAL 第二种 ioctl操作方法)
  4. Java并发—锁的使用及原理
  5. Java 判断密码是否是大小写字母、数字、特殊字符中的至少三种
  6. python基础论文_北大博士Python学习笔记,Python基础语法总结,一篇文章带你入门...
  7. UISwitch 添加 标签
  8. C++语言类的详解和示例
  9. JUnit单元测试的几个规律总结
  10. group by多字段分组
  11. Qt5学习笔记之QQ登录界面三:添加图片资源
  12. 微信浏览器跳转浏览器下载app解决方案
  13. python opencv二值化阈值图像分割
  14. 格拉布斯准则异常数据_异常处理准则和最佳实践
  15. C#VS2019中ReportViewer控件和报表设计器 RDLC使用方法总结
  16. 如何将ppt中的绘图高清保存
  17. 这世上,真有人会陪你手握屠龙刀,杀得生活措手不及!
  18. 门级仿真经验(SDF反标及其工作原理)
  19. windows下使用控制台打开conda虚拟环境
  20. qt 图片适应窗口_Qt图片自适应窗口控件大小

热门文章

  1. 计算机二级日期格式,09年计算机二级辅导:指定格式的日期字符串转化成java.util.Date类型日期对象...
  2. html5新增属性有哪些,HTML5 新增属性
  3. android Mp3播放器之音频文件扫描
  4. GridView常用总结
  5. 网站的高性能架构--web前端优化
  6. 十进制数转为十六进制字符串
  7. 用ipad维护Linux服务器
  8. windows+sublime text3+MINGW编译运行c
  9. 一次向svn中增加所有新增文件 svn add all new files【转】
  10. Tesseract-OCR 训练过程 V3.02