基本概念
Java的线程分为用户线程和守护线程,虚拟机必须保证用户线程执行完毕,而不需要等待守护线程执行完毕。守护线程主要用于后台记录操作日志,监控内存,垃圾回收等功能。通过setDaemon(true)可以将线程设置守护线程。
示例代码
这里启动一个守护线程和一个用户线程,运行代码可以看到,在用户线程运行结束后,程序会中止,守护线程并不会一直执行。
public class TestDaemon {
public static void main(String[] args) {
DaemonThread daemonThread = new DaemonThread();
UserThread userThread = new UserThread();
Thread thread = new Thread(daemonThread);
thread.setDaemon(true);//将线程设为守护线程
thread.start();//启动守护进程
new Thread(userThread).start();//启动用户线程
}
}
class DaemonThread implements Runnable {
@Override
public void run() {
int i = 0;
while(true) {
System.out.println("DaemonThread is running " + i);
i++;
}
}
}
class UserThread implements Runnable {
@Override
public void run() {
for(int i = 0; i <= 1000; i++) {
System.out.println("UserThread is running " + i);
}
System.out.println("UserThread is over");
}
}