一、线程分类
User Thread:用户线程,一般的线程默认为用户线程。
Daemon Thread:守护线程,也称“服务线程”,在没有用户线程可服务时会自动结束。守护线程的优先级比较低,用于为系统中的其它对象和线程提供服务。通过Thread.setDaemon(true)设置为守护线程。
二、守护线程的作用
任何一个守护线程都是整个JVM中所有非守护线程的守护者。只要当前JVM实例中尚存在任何一个非守护线程没有结束,守护线程就全部工作;只有当最后一个非守护线程结束时,守护线程随着JVM一同结束工作。虚拟机也就退出了。
三、应用
垃圾回收线程就是一个经典的守护线程,当我们的程序中不再有任何运行的线程,程序就不会再产生垃圾,垃圾回收器也就无事可做,所以当垃圾回收线程是JVM上仅剩的线程时,垃圾回收线程会自动离开。它始终在低级别的状态中运行,用于实时监控和管理系统中的可回收资源。
四、备注
守护线程中创建的线程默认为守护线程
如果将守护线程中创建的线程显示设置为非守护线程(用户线程),那这个线程是守护线程还是用户线程
答案:显示的设置是生效的,该线程为用户线程
本文分享自微信公众号 - 猪哥Java(pig-python)。
如有侵权,请联系 [email protected] 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。