中断线程小demo

本文详细探讨了如何在Java中设置线程休眠后中断,解释了isInterrupted和Thread.sleep对中断信号的影响。重点讲解了中断信号清除、中断检查与手动重置的方法,并通过实例说明了不同情况下的线程中断行为。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 private static void test2() throws InterruptedException {
        Thread thread=new Thread(()->{
            while (true){
                //中断信号 isInterrupted是不会被清除
            3.    if (Thread.currentThread().isInterrupted()) {
                    System.out.print("线程被中断");
                    return;
                }
                try {
                    //sleep会中断清除中断信号 isInterrupted也不行
                    Thread.sleep(1000);
                } catch (InterruptedException e) {
                    System.out.print("线程被中断程序退出");
                    Thread.currentThread().interrupt();
                }
            }
        });
        thread.start();
        //休眠2秒
      1.  thread.sleep(2000);
        //设置中断
      2.  thread.interrupt();
    }

总结:
1.设置线程休眠 2秒
2.设置线程中断
3.没有调用 isInterrupted或者 interrupted方法 线程是不会中断的
4.如果调用了isInterrupted之后正常中断
5.sleep方法会清除中断标记 如果再执行中断信号之后又有一个sleep则还是会继续执行 执行到catch代码块之后跳出循环
6.在catch代码块中又手动中断了一次 这次再执行到3的位置就正常中断了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值