gpt4 book ai didi

java - Thread.isInterrupted() 在线程终止后返回 false

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:23:28 31 4
gpt4 key购买 nike

考虑以下 JUnit 测试:

@Test
public void testSettingInterruptFlag() throws InterruptedException {

Thread blockingThread = new Thread(new Runnable() {
@Override
public synchronized void run() {

try {
wait();
} catch (InterruptedException e) {
Thread.currentThread().interrupt();
}
}
});
blockingThread.start();
blockingThread.interrupt();
blockingThread.join();
assertTrue(blockingThread.isInterrupted());
}

即使设置了中断状态,测试也会失败。我怀疑行 blockingThread.join(); 重置了标志,但即使用 Thread.sleep(3000); 替换该行,测试仍然失败。是否在任何地方记录了此行为?

最佳答案

我们看到线程的中断状态在线程结束时被清除。 http://docs.oracle.com/javase/7/docs/api/java/lang/Thread.html 中没有记录,因此可以被视为规范或实现错误。

关于java - Thread.isInterrupted() 在线程终止后返回 false,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20969486/

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