gpt4 book ai didi

Java Threads isInterrupted(),为什么没有出现这个输出

转载 作者:行者123 更新时间:2023-12-03 12:44:54 26 4
gpt4 key购买 nike

我正在玩线程,并从我的程序中发现了一些我无法理解的奇怪输出。
这是我的 Self 类:

public class Self {

public static void main(String[] args) {
System.out.println("Hello from main");

Thread t = Thread.currentThread();

if (Thread.interrupted()) {
System.out.println("Message 0A");
} else {
System.out.println("Message 0B");
}

t.interrupt();

if (t.isInterrupted()) {
System.out.println("Message 1A");
} else {
System.out.println("Message 1B");
}

if (Thread.interrupted()) {
System.out.println("Message 2A");
} else {
System.out.println("Message 2B");
}

if (t.isInterrupted()) {
System.out.println("Message 3");
}

System.out.println("Back from where ever I was");
}
}

这是我从 Self 类的输出:
Hello from main
Message 0B
Message 1A
Message 2A
Back from where ever I was
为什么“消息 3”永远不会打印?为什么“从我所在的地方回来”总是出现在与线程 t 相关的任何消息之后?

最佳答案

留言"Message 3"未显示,因为主线程的“中断状态”已被调用 Thread.interrupted() 清除.这就是实例方法 isInterrupted 之间的关键区别和静态方法 interrupted .前者不清除“中断状态”。
查看 javadoc 以获取更多详细信息。
https://docs.oracle.com/javase/7/docs/api/java/lang/Thread.html#interrupted()

关于Java Threads isInterrupted(),为什么没有出现这个输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66200397/

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