Java守护线程

   一、简介

     在Java中,守护线程(Daemon Thread)是一种特殊类型的线程,它是为其他线程提供服务的后台线程。当所有非守护线程结束时,守护线程也会随之结束。

        创建守护线程的方式与创建普通线程相同,只需要将线程的setDaemon(true)方法设置为true即可。守护线程通常用于执行后台任务,例如垃圾回收、自动保存或其他不需要与用户交互的任务。

        需要注意的是,守护线程并不是程序的关键部分,当所有非守护线程结束时,Java虚拟机会自动退出,并且不会等待守护线程执行完毕。因此,守护线程的执行不能依赖于具体的时间点或顺序。

        守护进程(Daemon)是运行在后台的一种特殊进程。它独立于控制终端并且周 期性地执行某种任务或等待处理某些发生的事件。也就是说守护线程不依赖于终端,但是依 赖于系统,与系统“同生共死”。当 JVM 中所有的线程都是守护线程的时候,JVM 就可以退 出了;如果还有一个或以上的非守护线程则 JVM 不会退出

守护线程在以下情况下会被终止:

  1. 所有非守护线程都已经结束;
  2. 手动调用守护线程的stopinterrupt方法。

        总之,守护线程在Java中是一种特殊类型的线程,用于为其他线程提供服务,并在所有非守护线程结束时自动结束。

二、示例

public class DaemonThreadExample {
    public static void main(String[] args) {
        Thread daemonThread = new Thread(new DaemonTask());
        daemonThread.setDaemon(true); // 设置线程为守护线程
        daemonThread.start();

        // 主线程继续执行其他任务
        for (int i = 0; i < 5; i++) {
            System.out.println("Main thread executing: " + i);
            try {
                Thread.sleep(1000);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }

        System.out.println("Main thread ends.");
    }
}

class DaemonTask implements Runnable {
    @Override
    public void run() {
        for (int i = 0; i < 10; i++) {
            System.out.println("Daemon thread executing: " + i);
            try {
                Thread.sleep(500);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
    }
}

        在上述代码中,我们创建了一个名为DaemonThreadExample的主类,其中包含一个main方法。在main方法中,我们首先创建了一个DaemonTask对象,并将其作为任务传递给一个新的线程daemonThread。然后,我们调用daemonThread.setDaemon(true)daemonThread设置为守护线程。最后,我们通过调用daemonThread.start()启动守护线程。

        在DaemonTask类中,我们实现了Runnable接口,并重写了run方法。在run方法中,我们使用一个简单的循环来模拟守护线程执行的任务。在每次循环中,它会打印一条消息,并通过调用Thread.sleep方法让线程休眠一段时间。

        在主线程中,我们使用一个简单的循环来模拟主线程执行的任务。在每次循环中,它也会打印一条消息,并通过调用Thread.sleep方法让线程休眠一段时间。

        运行上述代码,你会看到主线程和守护线程交替执行,但是当主线程执行完毕后,守护线程会立即结束,而不会等待它的任务执行完毕。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序员易晶

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值