[Java.Concurrency]普通线程 V.S. 守护线程——Daemon Thread
2014-08-21 15:52
253 查看
有时想要创建一个线程,执行一些辅助工作,但是不希望这个线程的存在阻碍JVM的关闭,这时需要用到守护线程——Daemon Thread。
线程被分为两种:普通线程和守护线程
JVM启动的时候创建的所有的线程,除了主线程以外,其他的都是守护线程(比如垃圾回收器和其他类似线程)。
当一个新的线程创建时,新线程继承了创建它的线程的后台状态,所以在默认情况下,任何主线程创建的线程都是普通线程。
普通线程和守护线程之间的差别仅仅在于退出时会发生什么。
当一个线程退出时,JVM会检查一个运行中线程的详细清单。如果仅剩下守护线程,它会发起正常的退出,当JVM停止时,所有仍然存在的守护线程都会被抛弃——不会执行finally块,也不会释放栈——JVM直接退出。
守护线程应该小心使用——在任何时候,几乎没有哪些活动的处理可以在不进行清理的情况下,被安全地抛弃,特别是执行IO操作的任务运行在守护中很危险的。守护线程最好用于“家务管理”,比如一个背景线程可以从内存的缓存中周期性地移除过期的访问。
线程被分为两种:普通线程和守护线程
JVM启动的时候创建的所有的线程,除了主线程以外,其他的都是守护线程(比如垃圾回收器和其他类似线程)。
当一个新的线程创建时,新线程继承了创建它的线程的后台状态,所以在默认情况下,任何主线程创建的线程都是普通线程。
普通线程和守护线程之间的差别仅仅在于退出时会发生什么。
当一个线程退出时,JVM会检查一个运行中线程的详细清单。如果仅剩下守护线程,它会发起正常的退出,当JVM停止时,所有仍然存在的守护线程都会被抛弃——不会执行finally块,也不会释放栈——JVM直接退出。
守护线程应该小心使用——在任何时候,几乎没有哪些活动的处理可以在不进行清理的情况下,被安全地抛弃,特别是执行IO操作的任务运行在守护中很危险的。守护线程最好用于“家务管理”,比如一个背景线程可以从内存的缓存中周期性地移除过期的访问。
相关文章推荐
- JAVA守护线程 daemon thread
- java中精灵线程(Daemon)或守护线程和普通线程有什么区别
- java 守护线程(Daemon)
- java的守护线程
- Java线程之守护线程(Daemon)
- java多线程总结二:后台线程(守护线程)
- 《Java Concurrency in Practice》 学习笔记--第二章:线程安全
- 什么是java的守护线程
- java守护线程和守护线程
- Java 守护线程
- Java线程之守护线程(Daemon)收藏
- java 守护线程
- 【Java.Concurrency】Java线程状态图
- JAVA线程中的守护线程(Daemon)
- Java线程:线程的调度-守护线程
- Java中的守护线程 & 非守护线程(简介)
- java守护线程
- Java线程之守护线程(Daemon)
- Java线程:线程的调度-守护线程
- Java 线程_3 线程的交互与守护线程