Java有两种线程:守护线程(Daemon Thread)与 用户线程(User Thread) 
任何Java线程都可以是守护线程(Daemon Thread)或者 用户线程(User Thread)

守护线程(Daemon Thread)

是为运行在相同的进程中的其它线程(User Thread)提供服务的,是一种“在后台提供通用性支持”的线程,它并不属于程序本体,比如垃圾回收线程就是一个很称职的守护者。

用户线程(User Thread)

就是我们通常谈论到的线程

如何区别它们

它们唯一的区别是判断虚拟机何时离开: 
用户线程(User Thread):Java虚拟机在它所有非守护线程已经离开后自动离开。 
守护线程(Daemon Thread):守护线程则是用来服务用户线程的,如果没有其他用户线程在运行,那么就没有可服务对象,也就没有理由继续下去。

当线程只剩下守护线程的时候,JVM就会退出.但是如果还有其他的任意一个用户线程还在,JVM就不会退出。

setDaemon(boolean on)方法可以方便的设置线程的Daemon模式,true为Daemon模式,false为User模式。setDaemon(boolean on)方法必须在线程启动之前调用,当线程正在运行时调用会产生异常。isDaemon方法将测试该线程是否为守护线程。值得一提的是,当你在一个守护线程中产生了其他线程,那么这些新产生的线程不用设置Daemon属性,都将是守护线程,用户线程同样。

需要注意的

#### 1. 在守护线程中产生的新线程也是守护线程 #### 2. 不是所有的应用都可以交给守护线程(Daemon Thread) 
因为所有的用户线程都离开时,JVM就该退出了,前面我也说过,当没有用户线程时,守护线程也该退出了,如果此时交给守护线程的任务(读写操作或者计算逻辑)没有完成,将造成严重的灾难。

最新文章

  1. 解决ugui中Image使用iTween的ColorTo、ColorFrom等不生效
  2. 移动测试主要使用的测试框架,基于python
  3. javaweb框架构想-自己的对象存储池-遁地龙卷风
  4. concat,reverse
  5. 初识轻量级Java开源框架 --- Spring
  6. IntelliJ IDEA 14和Maven创建java web项目
  7. C#创建服务及使用程序自动安装服务,.NET创建一个即是可执行程序又是Windows服务的exe
  8. stm32学习笔记----双串口同时打开时的printf()问题
  9. Android 自定义TimePickerDialog
  10. 格式化时间(SimpleDateFormat)
  11. 关于ligerui和其他前端脚本的学习方法(适用于自己)
  12. spring整合mybatis,springMVC的0配置文件方式
  13. H3C交换机如何配置管理VLAN
  14. Angular动画
  15. AI 线性回归
  16. matlab 投影
  17. 最短路径 - 弗洛伊德(Floyd)算法
  18. Javac的命令
  19. 如何阻止自动更新‘updated_at’和'created_at'
  20. Thymeleaf 条件语句

热门文章

  1. 201621044079《Java程序设计》第二周学习总结
  2. 【EasyNetQ】- 简介
  3. Resources for Browser/Webkit/GPU
  4. fetch_array()与fetch_assoc()的用法
  5. chrome & dark theme
  6. [CCF] 201612-2 工资计算
  7. 左右躲避障碍-神手ts版本
  8. hdu 2199 Can you solve this equation? (二分法)
  9. luogu P2764 最小路径覆盖问题
  10. nm用法小记