简介
在Java中有两类线程:User Thread(用户线程)、Daemon Thread(守护线程)
Daemon的作用是为其他线程的运行提供服务,比如说GC线程。
User Thread线程和Daemon Thread守护线程本质上来说去没啥区别的,唯一的区别之处就在虚拟机的离开:如果User Thread全部执行结束,Daemon Thread就会终止,虚拟机也会结束运行。
通过 Thread.setDaemon(true)
设置为守护线程,不设置则默认为用户线程。
注意事项
- 值得注意的是
Thread.setDaemon(true)
必须在Thread.start()
之前调用,否则将抛出IllegalThreadStateException
。 - 不应该在守护线程中做 读写操作 或 计算逻辑 等操作,因为守护线程随时可能因为用户线程的终止而结束