守护线程与非守护线程的区别

2020-07-09  本文已影响0人  逝去丶浅秋

java中两类线程:User Thread(用户线程)和Daemon Thread(守护线程)。

任何一个守护线程都会守护整个JVM中所有的非守护线程,只要当前JVM中还有任何一个非守护线程没有结束,守护线程就全部工作,当所有的非守护线程全部结束后,守护线程也会随着JVM一同结束。守护线程最典型的应用就是GC(垃圾回收器)。

需要注意的地方:
1、thread.setDaemon(true)方法必须在thread.start()之前设置,否则会报IllegalThreadStateException异常,不能把正在运行的常规线程设置为守护线程。
2、在守护线程中产生的新线程也是守护线程。
3、不是所有应用都可以分配守护线程来进行服务,比如读写操作或是计算逻辑等。因为如果非守护线程都结束了,但是读写或计算逻辑没有完成,守护线程也会停止。

判断线程是否为守护线程的方法是:isDaemon(),返回true为守护线程,返回false为非守护线程


写在最后:

上一篇下一篇

猜你喜欢

热点阅读