关于JAVA的守护进程
2013-10-15 18:14
260 查看
Java有两种线程:守护线程(Daemon Thread)与 用户线程(User Thread)
任何Java线程都可以是守护线程(Daemon Thread)或者 用户线程(User Thread)
用户线程(User Thread):Java虚拟机在它所有非守护线程已经离开后自动离开。
守护线程(Daemon Thread):守护线程则是用来服务用户线程的,如果没有其他用户线程在运行,那么就没有可服务对象,也就没有理由继续下去。
当线程只剩下守护线程的时候,JVM就会退出.但是如果还有其他的任意一个用户线程还在,JVM就不会退出。
setDaemon(boolean on)方法可以方便的设置线程的Daemon模式,true为Daemon模式,false为User模式。setDaemon(boolean on)方法必须在线程启动之前调用,当线程正在运行时调用会产生异常。isDaemon方法将测试该线程是否为守护线程。值得一提的是,当你在一个守护线程中产生了其他线程,那么这些新产生的线程不用设置Daemon属性,都将是守护线程,用户线程同样。
因为所有的用户线程都离开时,JVM就该退出了,前面我也说过,当没有用户线程时,守护线程也该退出了,如果此时交给守护线程的任务(读写操作或者计算逻辑)没有完成,将造成严重的灾难。
任何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就该退出了,前面我也说过,当没有用户线程时,守护线程也该退出了,如果此时交给守护线程的任务(读写操作或者计算逻辑)没有完成,将造成严重的灾难。
相关文章推荐
- 如何找到占用cpu最高的java线程?tomcat所在线程是守护线程吗?如何在linux中断一个Java进程中的线程,如何让一个守护线程不被结束
- 关于java在windows里面进程名称问题?
- 守护进程 关于setsid() 函数的说明
- java的守护进程与非守护进程
- java-守护进程
- java开发守护进程
- 守护进程与java中的守护线程使用
- crontab方式在linux中守护java进程
- java,python守护进程守护线程Daemon(经典好文)
- 关于守护进程的
- APP中一种在Java层实现的简单守护进程方式
- 关于Java中进程与线程的初步认识与掌握
- ps -ef | grep java 查看所有关于java的进程
- 关于R3下的自身进程守护
- Java 实现程序运行状态监控 之我的思路(守护进程)
- java开发守护进程
- 关于进程守护,拉起问题
- Java 对象锁-synchronized()与线程的状态与生命周期与守护进程
- 查看Java的守护进程PID以及JVM运行情况