`

java的守护线程与非守护线程

 
阅读更多

在Java中有两类线程:User Thread(用户线程)、Daemon Thread(守护线程:后台线程) 

用个比较通俗的比如,任何一个守护线程都是整个JVM中所有非守护线程的保姆:

只要当前JVM实例中尚存在任何一个非守护线程没有结束,守护线程就全部工作;只有当最后一个非守护线程结束时,守护线程随着JVM一同结束工作。
Daemon的作用是为其他线程的运行提供便利服务,守护线程最典型的应用就是 GC (垃圾回收器),它就是一个很称职的守护者。

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

 

这里有几点需要注意: 
(1) thread.setDaemon(true)必须在thread.start()之前设置,否则会跑出一个IllegalThreadStateException异常。你不能把正在运行的常规线程设置为守护线程。
(2) 在Daemon线程中产生的新线程也是Daemon的。 
(3) 不要认为所有的应用都可以分配给Daemon来进行服务,比如读写操作或者计算逻辑。

 

http://blog.csdn.net/shimiso/article/details/8964414

http://www.cnblogs.com/super-d2/p/3348183.html

分享到:
评论

相关推荐

    浅谈java的守护线程与非守护线程

    主要介绍了浅谈java的守护线程与非守护线程,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧

    【java 多线程】守护线程与非守护线程的详解

    主要介绍了java守护线程与非守护线程,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

    java的守护线程+log4日志记录

    很多人对java的线程不是很了解,甚至连守护线程都么有听过,其实很简单,守护线程就是普通的线程,区别再于,他就是类似一个秘书一样,记录着所有的非守护线程的信息等等,守护线程,是指为工作线程做相关统计、汇总...

    线程 JAVA java线程 java线程第3版 java线程第2版第3版合集

    它展示了如何与非线程安全的类共同工作,并特别关注于Swing的线程问题。新增加的一章介绍了如何为多处理器机器编写并行代码。 简而言之,本书的新版涉及了有关线程的方方面面,从最简单的动画applet到最复杂的应用...

    Java多线程编程指南

    Java 给多线程编程提供了内置的支持。 一条线程指的是进程中一个单一顺序的控制流,...一个进程一直运行,直到所有的非守护线程都结束运行后才能结束。 多线程能满足程序员编写高效率的程序来达到充分利用 CPU 的目的。

    动力节点_Java基础视频教程218_线程-守护线程

    动力节点的Java课程适合绝对零基础的观看,教程中讲解了Java开发环境搭建、Java的基础语法、Java的面向对象。每一个知识点都讲解的非常...适合非计算机专业,想转行做Java开发的朋友,或者想让Java基础更扎实的小伙伴。

    yibingxiong#java-concurrent-programming-art-mini#03-线程的一些属性1

    非守护线程创建的线程默认为非守护线程,守护则默认为守护线程优先级(priority)优先级高的线程可以得到更多cpu资源, 级别是1-10,默认优先级和创建他的

    java并发编程面试题

    java并发编程 基础知识,守护线程与线程, 并行和并发有什么区别? 什么是上下文切换? 线程和进程区别 什么是线程和进程? 创建线程有哪几种方式?,如何避免线程死锁 线程的 run()和 start()有什么区别? 什么是 ...

    JAVA多线程技术分享-39页PPT(winding)

    4,守护线程 二 锁: 1,乐观锁 悲观锁 2,自旋锁 适应性自旋锁 3,synchronized 锁升级 4,公平锁 非公平锁 5,可重入锁 非可重入锁 三: 线程通信 1,wait notify 2,volatile 3,lock 4,join 5,并发工具 ...

    java8源码-JavaSE-Code:JavaSE的代码练习与学习笔记总结

    只要当前JVM实例中存在任何一个非守护线程在没有结束,守护线程就在工作.守护线程的作用就是为其他的非守护线程提供便利服务 第二章:对象及变量的并发访问 只有共享的资源读写才需要同步化 方法中的变量不存在非线程...

    Java 7并发编程实战手册

    1.8 守护线程的创建和运行 20 1.9 线程中不可控异常的处理 24 1.10 线程局部变量的使用 26 1.11 线程的分组 30 1.12 线程组中不可控异常的处理 34 1.13 使用工厂类创建线程 37 第2章 线程同步...

    Java并发编程实战

    7.4.2 守护线程136 7.4.3 终结器136 第8章 线程池的使用138 8.1 在任务与执行策略之间的隐性耦合138 8.1.1 线程饥饿死锁139 8.1.2 运行时间较长的任务140 8.2 设置线程池的大小140 8.3 配置...

    java范例开发大全源代码

     第2章 Java基础类型与运算符(教学视频:39分钟) 9  2.1 基础类型 9  实例2 自动提升 9  实例3 自动转换 10  实例4 常用基础类型之强制转换 11  2.2 运算符 12  实例5 算术运算符 12  实例6...

    java范例开发大全

    实例229 变形金刚中的守护神(守护线程) 424 实例230 查看JVM中所有的线程的活动状况 426 实例231 模仿网络快车下载工具下载文件 428 13.2 多线程的同步与互斥 436 实例232 多线程同步方法的实例 436 实例233 ATM...

    Python中Threading用法详解

    Python的threading模块松散地基于Java的threading模块。但现在线程没有优先级,没有线程组,不能被销毁、停止、...在非守护进程中使用Event。 Thread 类 (group=None, target=None, name=None, args=(), kwargs={}, *

    Java范例开发大全 (源程序)

     第2章 Java基础类型与运算符(教学视频:39分钟) 9  2.1 基础类型 9  实例2 自动提升 9  实例3 自动转换 10  实例4 常用基础类型之强制转换 11  2.2 运算符 12  实例5 算术运算符 12  实例6 关系...

    Java范例开发大全(全书源程序)

    实例229 变形金刚中的守护神(守护线程) 424 实例230 查看JVM中所有的线程的活动状况 426 实例231 模仿网络快车下载工具下载文件 428 13.2 多线程的同步与互斥 436 实例232 多线程同步方法的实例 436 实例233...

    Java开发实战1200例(第1卷).(清华出版.李钟尉.陈丹丹).part3

    实例128 使用守护线程 166 实例129 休眠当前线程 167 实例130 终止指定线程 169 实例131 线程的插队运行 170 6.2 线程的同步 171 实例132 非同步的数据读写 171 实例133 使用方法实现线程同步 172 实例134 使用代码...

Global site tag (gtag.js) - Google Analytics