Java——后台线程_setDaemon ( true )语句

对 Java 程序来说,只要还有一个前台线程在运行,这个进程就不会结束,如果一个进程中只有后台线程运行,这个进程就会结束

这里提到的前台线程和后台线程是一种相对的概念,新创建的线程默认都是前台线程,如果某个线程对象在启动之前调用 setDaemon ( true )语句,这个线程就变成一个后台线程

案例:

class DamonThread implements Runnable { //创建 DamonThread类,实现 Runnable接口
    public void run() { //实现接口中的 run()方发
        while (true) {
            System.out.println(Thread.currentThread().getName()+"---is running");
        }
    }
}

public class ExampleM06 {
    public static void main(String[] args) {
        System.out.println("main线程是后台线程吗?"+Thread.currentThread().isDaemon());
        DamonThread dt = new DamonThread(); //创建一个 DamonThread对象 dt
        Thread t = new Thread(dt,"后台线程");   //创建线程 t 共享 dt 资源
        System.out.println("t 线程默认是后台线程吗?"+t.isDaemon());
        //判断是否为后台线程
        t.setDaemon(true);  //将线程 t 设置为后台线程
        t.start();  //调用 start()方法开启线程 t
        for (int i=0;i<10;i++) {
            System.out.println(i);
        }
    }
}

当开启线程 t 后,会执行死循环中的打印语句,但我们将线程 t 设置为后台线程后,当前台线程死亡后, JVM 会通知后台线程。由于后台线程从接受指令,到做出响应,需要一定的时间,因此,打印了几次“后台线程—is running.”语句后,后台线程也结束了。由此说明进程中只有后台线程运行时,进程就会结束

注意:要将某个线程设置为后台线程,必须在该线程启动之前,也就是说 setDaemon()方法必须在 start()方法之前调用,否则会引发 IllegalThreadStateException 异常。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值