线程分为两类:
用户线程:运行在前台,执行具体任务
如程序的主线程、连接网络的子线程等都是用户线程
守护线程:运行在后台,为其他前台线程服务(也就是某些线程的服务者)
特点:一旦所有的用户线程都结束运行(没有了守护的对象),守护线程会随JVM一起结束工作
如:数据库连接池中的监测线程(监测连接个数、监测连接超时时间)、JVM虚拟机启动之后的监测线程
最常见的还是GC垃圾回收线程
1.daemon(英文守护的意思)设置是否是守护线程,必须在start方法前调用
2.守护线程汇总产生的线程也是守护线程
3.不是所有的任务都能设置成守护线程,如读写操作、计算逻辑(也就是和实际业务逻辑相关的线程不能设置成守护线程)
如何设置守护线程
1.设置守护线程的方法
可以通过调用Thread类的setDaemon(true)方法来设置当前的线程为守护线程.必须在start()方法前调用,否则将会抛出不合法的线程状态异常.
2.在守护线程中产生的新线程也是守护线程.
并不是所有的任务都可以分配给守护线程来执行,比如读写操作或计算逻辑.因为若当前所有的用户线程都结束了工作,此时守护线程就会随JVM一起结束工作,不能保证当前守护线程里的操作已执行完毕.