Java的守护线程

最近重新研究Java基础知识,发现以前太多知识知识略略带过了,比较说Java的线程机制。

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

守护线程与普通线程写法上基本么啥区别,调用线程对象的方法setDaemon(true),则可以将其设置为守护线程。

守护线程使用的情况较少,但并非无用,举例来说,JVM的垃圾回收、内存管理等线程都是守护线程。还有就是在做数据库应用时候,使用的数据库连接池,连接池本身也包含着很多后台线程,监控连接个数、超时时间、状态等等。

setDaemon方法的说明:

publicfinalvoid setDaemon(boolean on)

将该线程标记为守护线程或用户线程。当正在运行的线程都是守护线程时,Java 虚拟机退出。   

 该方法必须在启动线程前调用。


守护线程与普通线程的唯一区别是:当JVM中所有的线程都是守护线程的时候,JVM就可以退出了;如果还有一个或以上的非守护线程则不会退出。(以上是针对正常退出,调用System.exit则必定会退出)


所以setDeamon(true)的唯一意义就是告诉JVM不需要等待它退出,让JVM喜欢什么退出就退出吧,不用管它。


参考自:http://bbs.csdn.net/topics/80298851

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


你可能感兴趣的:(Java的守护线程)