Java守护线程
虚拟机分为用户线程和守护线程,虚拟机必须确保用户线程执行完毕。守护线程具有以下特性:
1️⃣ 具备多线程特性
2️⃣ 启用线程守护的线程会等到主线程结束后自动结束运行
public class Yxj{
public static void main(String[] args) {
Thread thread = new Thread(new SHXCA(),"a");
//thread线程启动了线程守护,将在主方法运行结束后结束自己的运行
thread.setDaemon(true);
Thread thread2 = new Thread(new SHXCB(),"b");
thread.start();
thread2.start();
}
}
class SHXCA implements Runnable{
@Override
public void run() {
while (true){
System.out.println(Thread.currentThread().getName());
}
}
}
class SHXCB implements Runnable{
@Override
public void run() {
for (int i = 0; i < 20; i++) {
System.out.println(Thread.currentThread().getName());
}
}
}
打印结果:
【注】因为这是多线程程序,打印结果不会一模一样,以下是我的打印结果
Connected to the target VM, address: '127.0.0.1:50535', transport: 'socket'
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
b
b
b
b
b
b
b
b
b
b
b
b
b
b
b
b
b
b
b
b
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
a
Disconnected from the target VM, address: '127.0.0.1:50535', transport: 'socket'
Process finished with exit code 0