gpt4 book ai didi

java - 线程中断方法的执行顺序困惑

转载 作者:行者123 更新时间:2023-12-01 10:24:47 25 4
gpt4 key购买 nike

我是 Java 新手,正在尝试学习线程中断的概念。当我运行下面的代码时,我期望在消息“调用中断”之前打印消息“线程中断”。然而,事实恰恰相反。为什么会发生这种情况?

public class ThreadInterrupt {

public static void main(String[] args) throws InterruptedException {
MyThread mt1 = new MyThread();
mt1.start();
Thread.sleep(2000);
mt1.interrupt();
System.out.println("called interrupt");
}

}

class MyThread extends Thread{

@Override
public void run(){
try {
for (int i = 0; i < 5; i++){
System.out.println("from secondary thread");
sleep(1000);
}
} catch (InterruptedException e){
System.out.println("thread interrupted");
}
}
}

最佳答案

调用mt1.interrupt()后,main线程继续执行下一步。线程中断在 mt1 自己的执行行中进行处理(即:打印“线程中断”)。此代码中没有任何内容可以保证在 main 线程打印“叫中断”之前完成 mt1

您可以在mt1.interrupt()之后添加mt1.join(),让main线程等待完成>mt1 线程。

关于java - 线程中断方法的执行顺序困惑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35400899/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com