gpt4 book ai didi

java - 在 intellij 中进行单步调试时如何保持在当前线程上

转载 作者:行者123 更新时间:2023-11-30 08:11:17 26 4
gpt4 key购买 nike

在 intellij 中调试多线程代码时,更具体地说,在进入线程内部时...

设置:

            @Override
public
void run() {
while (true) {
System.err.println("1" + get()); <-- breakpoint
System.err.println("2" + get());
System.err.println("3" + get());
}
}

public String get() {
return "x";
}

我有 6 个线程,都在运行上面的代码。

Intellij 不断更改我所在的当前线程,这意味着当我为 T1 发出“跳过”(F8) 命令时,调试器会将焦点更改为 T2。我期望的是在调试时 保持在 T1 中——因此要产生结果:

T1: 1x
T1: 2x
T1: 3x
T1: 1x
T1: 2x

然后,让我们切换到另一个线程,T2。

T2: 1x
T2: 2x
T2: 3x
T2: 1x
T2: 2x
T2: 3x

然后,回到T1:

T1: 3x  (it picks back up from where it left off)

相反,我得到的是:

T1: 1x
T3: 1x
T5: 1x
T1: 2x
T2: 1x
T3: 2x
T1: 3x
etc.

它是无序的,而且一点也不直观。

如果我想要实现预期的行为,我必须执行以下操作:

切换到 T1:

T1: 1x

切换到 T1:

T1: 2x

切换到 T1:

T1: 3x

切换到 T2:

T2: 1x

切换到 T2:

T2: 2x

切换到 T2:

T2: 3x

切换到 T1:

T1: 1x

等...

我已经寻找了一种方法来防止这种情况,但我还没有找到解决方案,而且我发现的唯一方法(保持在我当前线程中的步进)是继续用鼠标选择它每次我走。

问题是:如何防止 intellij 更改我所在的线程?

编辑:我应该指出,如果调用任何方法,线程执行顺序是乱序的。

最佳答案

在断点处右击,你可以选择一些选项,例如Suspend on Thread。

enter image description here

关于java - 在 intellij 中进行单步调试时如何保持在当前线程上,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31086965/

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