您的位置:首页 > 编程语言 > Java开发

[Java.Concurrency]普通线程 V.S. 守护线程——Daemon Thread

2014-08-21 15:52 253 查看
有时想要创建一个线程,执行一些辅助工作,但是不希望这个线程的存在阻碍JVM的关闭,这时需要用到守护线程——Daemon Thread

线程被分为两种:普通线程和守护线程

JVM启动的时候创建的所有的线程,除了主线程以外,其他的都是守护线程(比如垃圾回收器和其他类似线程)。

当一个新的线程创建时,新线程继承了创建它的线程的后台状态,所以在默认情况下,任何主线程创建的线程都是普通线程

普通线程和守护线程之间的差别仅仅在于退出时会发生什么。

当一个线程退出时,JVM会检查一个运行中线程的详细清单。如果仅剩下守护线程,它会发起正常的退出,当JVM停止时,所有仍然存在的守护线程都会被抛弃——不会执行finally块,也不会释放栈——JVM直接退出。

守护线程应该小心使用——在任何时候,几乎没有哪些活动的处理可以在不进行清理的情况下,被安全地抛弃,特别是执行IO操作的任务运行在守护中很危险的。守护线程最好用于“家务管理”,比如一个背景线程可以从内存的缓存中周期性地移除过期的访问。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: