java 守护线程

很多人都迷糊守护线程和正常的线程有什么区别,我只想说一下我的理解。


首先代码上的区别:


    java里面创建线程有两种方式,一个是实现Runnable接口,另一个就是集成Thread,创建守护线程,就是通过调用

Thread的setDaemon(true);,调用start之后,这个线程就是守护线程啦,代码上就这么点区别。不解释了,大家应

该都明白了。

    另外有一点要提的就是,你创建的线程,里面还是可以创建子线程的,如果父线程是守护线程的话,那么子线程也是守护线程,反之正常的线程也是一样的。


运行之后的区别(thread调用start之后):

    执行之后,说白了,区别就是,你的程序执行完了(什么叫完了,就是主线程执行结束了),守护线程不管有没有执行完,都会结束退出。正常的线程则会等到自己执行完之后才退出。这样说大家没什么感觉。那下面先说点其他的:

 

java 虚拟机什么时候停止退出:

 

1.调用了 Runtime 类的 exit 方法,并且安全管理器允许退出操作发生。
2.非守护线程的所有线程都已停止运行,无论是通过从对 run 方法的调用中返回,还是通过抛出一个传播到 run 方法之外的异常。 
 

第一条咱么不考虑了,强制退出那没办反,是线程就得结束直接退出,第二条大家有没有想到什么,对,说白了就是所有的正常线程执行完了,jvm就可以停止退出了,换句话说,就是剩下的所有线程都是守护线程的时候jvm就可以退出了。ok,再简单点说就是守护线程的生命周期不会比JVM还长,正常线程可以。剩下的大家自己去理解吧。

这周刚开始写blog目的很简单:

 

 

  1. 分享知识
  2. 记录自己学习的知识
  3. 希望大家可以留言讨论,学习更多的知识

 

你可能感兴趣的:(java,jvm,守护线程)