第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题-对守护线程的理解的主要内容,如果未能解决你的问题,请参考以下文章

Java面试题—守护线程

JAVA 对守护线程的理解

java守护线程的理解

关于java多线程中守护线程的理解

java中的守护线程

.NET面试题系列(十四)分布式锁