请稍等 ...
×

采纳答案成功!

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

为什么我打印两次 thread.isInterrupted(),结果是 ture false?

public class RightWayInterrupted{
public static void main(String[] args) throws InterruptedException {
Thread thread = new Thread(new Thread1());
thread.start();
thread.interrupt();
System.out.println(thread.isInterrupted()); System.out.println(thread.isInterrupted());
thread.join();
} }

class Thread1 implements Runnable{     @Override     public void run() {     } }

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

插入代码

3回答

涛滔浪 2020-04-02 15:44:07

线程结束运行了的话,thread.isInterrupted()返回false。所以所有可能结果是:1. true,true;2. true,false;3. false,false。你后面加的join讲道理没啥用。你的run方法什么东西都没有,所以可能运行到这行代码前就结束了。

1 回复 有任何疑惑可以回复我~
  • 牛逼啊,老哥
    回复 有任何疑惑可以回复我~ 2020-09-20 14:23:20
张婧仪 2023-04-19 14:34:11

是因为打印第二次的时候,run方法已经运行完毕了,所以返回false。

你可以做个实验,加入Thread.sleep(5000),打印都是false

实验如下:

https://img1.sycdn.imooc.com//szimg/643f8b3f09b8d95e13020831.jpg

0 回复 有任何疑惑可以回复我~
悟空 2019-09-30 17:28:30

我运行你的这个代码,是两次true。

你是不是运行的代码不是贴的这个?贴一下完整代码吧。

0 回复 有任何疑惑可以回复我~
问题已解决,确定采纳
还有疑问,暂不采纳
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号