请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

老师,关于中断的问题

我的问题:
为什么多次运行这段代码,有时候打印false,有时候打印true,总体而言,打印false的次数更多
我的理解:
不管打印什么,都抛出异常了,说明都中断了,既然中断了,打印都应该是true,不应该是false啊
我的代码如下:

 public static void main(String[] args) throws InterruptedException {
        Runnable runnable=()->{
            try {
                Thread.sleep(5000);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        };
        Thread thread=new Thread(runnable);
        thread.start();
        Thread.sleep(1000);
        thread.interrupt();
        System.out.println(thread.isInterrupted());
    }

打印结果:
图片描述
图片描述

正在回答 回答被采纳积分+3

1回答

悟空 2023-04-14 00:15:32

我觉得你说得对,我也无法解释这个现象,如果有新消息欢迎交流。

0 回复 有任何疑惑可以回复我~
  • 提问者 相信光变成光 #1
    老师,我说下我的理解,你看看对不对。如果主线程方法在sleep清除中断状态前调度,打印就是true。在清除中断状态后调度,打印就是false
    回复 有任何疑惑可以回复我~ 2023-04-18 11:10:20
  • 悟空 回复 提问者 相信光变成光 #2
    是的有道理
    回复 有任何疑惑可以回复我~ 2023-04-28 10:05:40
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信