2011-11-17 130 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中掛起所有線程。