概念
所谓守护线程,就是用来“守护”其他线程的线程,其实就是服务于其他的线程,守护线程的终止与用户现场有关,当所有用户线程都执行完毕时,不管守护线程有没有执行完毕都会被停止。
例子
public class DaemonThread {
static class TestThread extends Thread{
@Override
public void run() {
while (true){
System.out.println("is running");
}
}
}
public static void main(String[] args) {
TestThread testThread = new TestThread();
testThread.setDaemon(true); //设置为守护线程
testThread.start();
}
}
执行结果为:
is running
is running
is running
is running
is running
is running
is running
is running
is running
is running
is running
is running
Disconnected from the target VM, address: '127.0.0.1:0', transport: 'socket'
在main线程执行完毕之后,守护线程也结束执行。
finally语句不一定会执行
通常使用try..finally
语句可以保证finally语句一定会被执行,在守护线程中,当守护线程被关闭时,是不能保证finally语句一定会被执行的。