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

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

public class IsInterruptedTest {

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

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

要重现它,请执行以下步骤:
  • System.out.println(Thread.currentThread().isInterrupted());设置一个断点
  • 以 Debug模式启动主要方法
  • 等待执行到断点。
  • 评估表达式窗口(Alt + F8)中调用Thread.currentThread().isInterrupted();。 (对我来说,此调用返回值)
  • 恢复程序执行,完成后-检查控制台中打印的值。 (对我来说正确的已在此处打印出来)

  • 因此,我的问题是-为什么这两个值不同?

    这是由于调试器正在挂起当前线程而发生的吗?如果是这样,是否有任何方法可以从IDE中的评估表达式窗口中获取正确的isInterrupted()调用值?

    最佳答案

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

    09-26 14:12