【并发】并发的基础概念(八)

在 Java 中,守护线程(Daemon Thread)是一种在后台运行的线程,它的主要作用是为其他线程提供服务和支持。例如,垃圾回收线程就是一个典型的守护线程。守护线程的一个重要特性是:当所有非守护线程(用户线程)都结束时,Java 虚拟机 (JVM) 会自动退出,无需等待守护线程的结束。

守护线程的特点和使用场景包括:

  1. 后台服务

    • 守护线程通常用于执行后台服务任务,例如垃圾回收、日志记录等。
  2. 自动结束

    • 当 JVM 中的所有非守护线程都结束时,守护线程会自动终止并且 JVM 会退出。
  3. 设置守护线程

    • 可以通过调用线程对象的 setDaemon(true) 方法来将一个线程设置为守护线程,必须在启动线程之前调用。
  4. 与非守护线程的区别

    • 守护线程在所有非守护线程结束后自动终止,而非守护线程则是需要显式地终止或者运行结束。

以下是一个示例代码,展示了如何创建和使用守护线程:

public class DaemonThreadDemo {
    public static void main(String[] args) {
        Thread daemonThread = new Thread(() -> {
            while (true) {
                System.out.println("Daemon thread is running...");
                try {
                    Thread.sleep(1000); // 模拟后台任务
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
            }
        });

        // 将线程设置为守护线程
        daemonThread.setDaemon(true);

        daemonThread.start();

        // 主线程休眠2秒,然后结束
        try {
            Thread.sleep(2000);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }

        System.out.println("Main thread is ending...");
    }
}

在这个示例中:

  1. 创建了一个新的线程 daemonThread,它会在后台不断打印 “Daemon thread is running…”。
  2. 使用 setDaemon(true) 将这个线程设置为守护线程。
  3. 启动守护线程。
  4. 主线程休眠 2 秒钟后结束。

当主线程结束后,守护线程会自动终止,因为没有其他非守护线程在运行,JVM 也随之退出。通过这个示例,可以看到守护线程在后台运行,并且会随着主线程的结束而自动终止。

  • 5
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值