Java 多线程:守护线程示例代码
public class MyThread extends Thread {
public MyThread() {
setDaemon(true); // 将线程设置为守护线程
}
@Override
public void run() {
while (true) {
System.out.println('守护线程正在运行中...');
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
public class Main {
public static void main(String[] args) {
MyThread myThread = new MyThread();
myThread.start();
System.out.println('主线程正在运行中...');
try {
Thread.sleep(5000);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println('主线程运行完毕');
}
}
//输出结果:
//主线程正在运行中...
//守护线程正在运行中...
//守护线程正在运行中...
//守护线程正在运行中...
//守护线程正在运行中...
//守护线程正在运行中...
//主线程运行完毕
代码说明:
MyThread类继承了Thread类,并重写了run()方法,该方法包含一个无限循环,用于模拟守护线程的持续运行。- 在
MyThread的构造函数中调用setDaemon(true)将线程设置为守护线程。 Main类创建了一个MyThread对象,并调用start()方法启动线程。- 主线程输出信息并休眠 5 秒后,主线程结束。由于守护线程是跟随主线程的,主线程结束,守护线程也将自动结束。
守护线程的特性:
- 守护线程是后台线程,不会阻止 JVM 退出。
- 守护线程通常用于提供辅助功能,例如垃圾回收或日志记录。
- 守护线程无法创建新的守护线程,只能创建非守护线程。
需要注意的是,守护线程不应该执行关键任务,因为它们可能会在主线程结束之前被终止。
原文地址: https://www.cveoy.top/t/topic/oglO 著作权归作者所有。请勿转载和采集!