2011-11-17 325 views
27

如果我有两个线程在我的程序中同时运行,并在其中一个断点上放置断点,那么其他线程是否也会在遇到此断点时停止,或者是否会继续执行?断点是否停止所有线程?

(我写在Java和使用NetBeans)

+4

@mre从米杰尔的回答可以看出,这取决于环境设置,所以我的观察并没有给我全面的图片,因此这个问题值得提问。 –

回答

33

断点有一个选择,他们应该如何表现:暂停单个线程或全部线程

breakpoints

+0

无法与其他IDE交谈,但在IDEA中,您可以右键单击装订线中的断点并将其挂起模式从“全部”(默认)更改为“线程”。直到今天,我还不知道你能否做到这一点,当时我正试图弄清楚为什么Guava事件总线处理程序中的断点是暂停主线程。 – joshbodily

9

我相信,每个线程将停止,一旦它击中在代码中的断点,而其他线程将继续运行。我记得我的雄猫时代。

+0

如果我们在谈论单一的网络应用程序,我认为这可能是不正确的。在intellij的想法断点默认停止所有线程。正因为如此,我有困难,试图调试@Async:我没有在调试中工作,因为我期望 – divideByZero

+0

错误的先生。这取决于你如何设置你的断点。 – snovelli

1

默认情况下只命中断点停止线程。但是,您可以通过更改breakpopint属性来修改行为。

1

可能有趣的是,在Eclipse和NetBeans中,缺省行为是在命中断点时挂起当前线程,而在IntelliJ中挂起所有线程。