守护线程
守护线程,是指在程序运行的时候在后台提供一种通用服务的线程,比如垃圾回收线程就是 一个很称职的守护者,并且这种线程并不属于程序中不可或缺的部分.因此,当所有的非守 护线程结束时,程序也就终止了,同时会杀死进程中的所有守护线程.反过来说,只要任何 非守护线程还在运行,程序就不会终止.
1、 用户线程和守护线程两者几乎没有区别,唯一的不同之处就在于虚拟机的离开:如果用户 线程已经全部退出运行了,只剩下守护线程存在了,虚拟机也就退出了.
2、 将线程转换为守护线程可以通过调用Thread对象的setDaemon(true)方法来实现.
3、 守护线程应该永远不去访问固有资源,如文件、数据库,因为它会在任何时候甚至在一个 操作的中间发生中断
守护线程使用场景
守护线程的典型代表是垃圾回收,这是很多人说守护进程非常有用的理由,但实际上守护进程 在用户开发上的应用场景几乎用处不大,可能的应用场景:
1、 内存资源或者线程的管理,但是非守护线程也可以做
2、 守护线程负责一个可以将当前的JVM退出的功能,即将非damon的线程都退出,然后jvm 自动退出,感觉用的也非常少,可以直接通知相关线程退出不就可以了,考虑设计上优雅一些, 可能有点好处。
总结
1、 任何没有应用场景的技术都讨论都是毫无用处,一个好的技术是要能解决问题的,不能为 了技术而技术。
2、 传统的守护进程(Daemon)是运行在后台的一种特殊进程。它独立于控制终端并且周期性 地执行某种任务或等待处理某些发生的事件。也就是说守护线程不依赖于终端,但是依赖于系统,与系统“同生共死”。java应用层的守护线程弱化的非常多,用处不大。

Was this helpful?

0 / 0

发表回复 0

Your email address will not be published.