守护线程与非守护线程的区别
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为非守护线程
写在最后:
- 如果文章中有错误或是表达不准确的地方,欢迎大家评论中指正,以便我完善。
- 文章我也会根据所学到新的知识不断更新。