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 退出。
  • 守护线程通常用于提供辅助功能,例如垃圾回收或日志记录。
  • 守护线程无法创建新的守护线程,只能创建非守护线程。

需要注意的是,守护线程不应该执行关键任务,因为它们可能会在主线程结束之前被终止。

Java 多线程:守护线程示例代码

原文地址: https://www.cveoy.top/t/topic/oglO 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录