很多人都迷糊守护线程和正常的线程有什么区别,我只想说一下我的理解。
首先代码上的区别:
? ? java里面创建线程有两种方式,一个是实现Runnable接口,另一个就是集成Thread,创建守护线程,就是通过调用
Thread的setDaemon(true);,调用start之后,这个线程就是守护线程啦,代码上就这么点区别。不解释了,大家应
该都明白了。
? ? 另外有一点要提的就是,你创建的线程,里面还是可以创建子线程的,如果父线程是守护线程的话,那么子线程也是守护线程,反之正常的线程也是一样的。
运行之后的区别(thread调用start之后):
? ? 执行之后,说白了,区别就是,你的程序执行完了(什么叫完了,就是主线程执行结束了),守护线程不管有没有执行完,都会结束退出。正常的线程则会等到自己执行完之后才退出。这样说大家没什么感觉。那下面先说点其他的:
?
java 虚拟机什么时候停止退出:
?
1.调用了 Runtime 类的 exit 方法,并且安全管理器允许退出操作发生。 2.非守护线程的所有线程都已停止运行,无论是通过从对 run 方法的调用中返回,还是通过抛出一个传播到 run 方法之外的异常。?
第一条咱么不考虑了,强制退出那没办反,是线程就得结束直接退出,第二条大家有没有想到什么,对,说白了就是所有的正常线程执行完了,jvm就可以停止退出了,换句话说,就是剩下的所有线程都是守护线程的时候jvm就可以退出了。ok,再简单点说就是守护线程的生命周期不会比JVM还长,正常线程可以。剩下的大家自己去理解吧。
这周刚开始写blog目的很简单:
?
?
?