Intellij IDEA评估表达式窗口和Thread.currentThread()。isInterrupted()值

时间:2017-05-08 17:16:28

标签: java multithreading intellij-idea

由于未知原因,我无法从 Intellij IDEA评估表达式窗口中获取 currentThread()。isInterrupted()的正确值。

这是一个小代码片段,可帮助您重现相同的行为:

public class IsInterruptedTest {

    public static void main(String[] args) {
        Thread.currentThread().interrupt();

        System.out.println(Thread.currentThread().isInterrupted());
    }
}

要重现它,请执行以下步骤:

  1. System.out.println(Thread.currentThread().isInterrupted());
  2. 设置断点
  3. 以调试模式启动main方法

  4. 等到执行到达断点。

  5. 评估表达式窗口(Alt + F8)中调用Thread.currentThread().isInterrupted();。 (对我来说,此调用返回 false 值)

  6. 恢复程序执行,完成后 - 检查控制台中打印的值。 (对我来说 true 就在这里打印)

  7. 所以,我的问题是 - 为什么这两个值不同?

    这是否由于当前线程被调试器暂停而发生?如果是这样,有没有办法从IDE中的评估表达式窗口获取正确的isInterrupted()调用值?

1 个答案:

答案 0 :(得分:4)

这是一个已知且尚未修复的错误:https://youtrack.jetbrains.com/issue/IDEA-169706