目录
问题解答
守护线程,它是一种专门为用户线程提供服务的线程,它的生命周期依赖于用户线程。
只有JVM中仍然还存在用户线程正在运行的情况下,守护线程才会有存在的意义。
否则,一旦JVM进程结束,那守护线程也会随之结束。
也就是说,守护线程不会阻止JVM的退出。但是用户线程会!
守护线程和用户线程的创建方式是完全相同的,我们只需要调用用户线程里面的setDaemon方法并且设置成true,就表示这个线程是守护线程。
因为守护线程拥有自己结束自己生命的特性,所以它适合用在一些后台的通用服务场景里面。比如JVM里面的垃圾回收线程,就是典型的使用场景。
这个场景的特殊之处在于,当JVM进程结束的时候,内存回收线程存在的意义也就不存在了。
所以不能因为正在进行垃圾回收导致JVM进程无法结束的问题。
但是守护线程不能用在线程池或者一些IO任务的场景里面,因为一旦JVM退出之后,守护线程也会直接退出。
就会可能导致任务没有执行完或者资源没有正确释放的问题。
面试点评
这个问题,大部分工作年限比较长的同学也不一定能回答上来。
首先线程这个领域在业务开发中本身使用就比较少,而守护线程接触就更少了。
只有积累足够多的技术,才能更从容的应对未来长远的职业发展。