我想如下运行具有断点下面的代码:的IntelliJ - 没有停止对多线程代码中的所有断点
new Thread(new Runnable() {
@Override
public void run() {
System.out.println("Starting"); //breakpoint here
}
}).start();
int i = 10;
i++; //breakpoint here
运行此代码时只有I ++断点被击中......如果我删除那一个,另一个线程的断点将被正确命中。为什么这种奇怪的行为发生?
我个人认为这是一个竞赛条件。在我的情况*恢复*仍然**没有**触发新线程的断点。解决问题的唯一方法是在开始新线程之前不要分手。然后这一切正常。 – kervin 2015-07-30 01:45:44
是否将断点上的暂停策略设置为“全部”(而不是“线索”)? – 2015-07-30 11:33:03
是的,他们都是。我可以简单地通过将断点从线程起点移近或更远来触发该问题,以便单独确认某种竞争条件。 – kervin 2015-07-30 12:34:27