第21题-对守护线程的理解
Posted dingwen_blog
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了第21题-对守护线程的理解相关的知识,希望对你有一定的参考价值。
文章目录
第21题-对守护线程的理解
1.定义
[!NOTE]
线程分为用户线程和守护线程,守护线程为所有非守护线程(用户线程)提供服务的线程。例如:GC线程。
2.生命周期
[!NOTE]
当所有用户线程都退出时,守护线程会退出。
3.总结
[!NOTE]
由于守护线程的终止是自身无法控制的,因此千万不要把IO、File等重要操作逻辑分配给它;因为它不靠谱。thread.setDaemon(true)必须在thread.start()之前设置,否则会跑出一个 IllegalThreadStateException异常。你不能把正在运行的常规线程设置为守护线程。在Daemon线程中产生的新线程也是Daemon的。 守护线程不能用于去访问固有资源,比如读写操作或者计算逻辑。因为它会在任何时候甚至在一个操作的中间发生中断。Java自带的多线程框架,比如ExecutorService,会将守护线程转换为用户线程,所以如果要使用后台线程就不能用Java的线程池。
以上是关于第21题-对守护线程的理解的主要内容,如果未能解决你的问题,请参考以下文章