Hi,大家好,我是Mic
一个工作了3年的粉丝,在面试的时候遇到一个线程相关问题。
想让我帮他解答一下。
问题是,“什么是守护线程,它有什么特点”
下面看看高手的回答。
高手:
好的。
守护线程,它是一种专门为用户线程提供服务的线程,它的生命周期依赖于用户线程。
只有JVM中仍然还存在用户线程正在运行的情况下,守护线程才会有存在的意义。
否则,一旦JVM进程结束,那守护线程也会随之结束。
也就是说,守护线程不会阻止JVM的退出。但是用户线程会!
守护线程和用户线程的创建方式是完全相同的,我们只需要调用用户线程里面的setDaemon方法并且设置成true,
就表示这个线程是守护线程。
因为守护线程拥有自己结束自己生命的特性,所以它适合用在一些后台的通用服务场景里面。
比如JVM里面的垃圾回收线程,就是典型的使用场景。
这个场景的特殊之处在于,当JVM进程技术的时候,内存回收线程存在的意义也就不存在了。
所以不能因为正在进行垃圾回收导致JVM进程无法技术的问题。
但是守护线程不能用在线程池或者一些IO任务的场景里面,因为一旦JVM退出之后,守护线程也会直接退出。
就会可能导致任务没有执行完或者资源没有正确释放的问题。
以上就是我对这个问题的理解。
总结
这个问题,大部分工作年限比较长的同学也不一定能回答上来。
首先线程这个领域在业务开发中本身使用就比较少
而守护线程接触就更少了。
我始终认为,只有积累足够多的技术,才能更从容的应对未来长远的职业发展。
喜欢我作品的小伙伴,记得点赞收藏加关注。
版权声明:本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自Mic带你学架构
!
如果本篇文章对您有帮助,还请帮忙点个关注和赞,您的坚持是我不断创作的动力。欢迎关注同名微信公众号获取更多技术干货!