2013-07-02 49 views
2

有沒有一種方法讓調試器暫停特定線程,同時讓其他線程運行?我想驗證一些鎖,我有正常工作,我不知道如何誘導某些條件。請注意,所有線程都運行相同的代碼,因此對代碼的任何更改都會影響全部線程,因爲我只想停止一個線程。Eclipse暫停一個特定的線程,讓其他人運行

+0

您是否嘗試過在特定線程上掛起?我不確定它會讓其他線程執行! – NINCOMPOOP

+1

線程在瞬間完成,我想如何暫停它們? –

回答

0

如果您的代碼中有一個方便的點來爲該單線程設置斷點,則可以將其斷點的Suspend Policy更改爲僅停止當前線程而不是整個虛擬機。

+1

但我所有的線程都運行相同的代碼。我如何才能讓它暫停*一個*線程? –

0

您可以添加一個方法在線程中進行睡眠。然後你可以用junit或簡單的POJO調用這個方法。

+1

與其他答案一樣的問題 - 如果我在那裏放入一個'sleep()',那麼*所有*線程將會睡眠,因爲我只想要*一個*線程進入睡眠或暫停狀態,或者以任何其他方式不運行直到我告訴它完成。 –

0

我能夠通過基本上把下面的代碼在線程代碼排序的解決我自己的問題 -

if(Thread.currentThread.getName()="thread1"){ 
    Thread.currentThread.sleep(5000); 
} 

這樣,只有線程1點睡覺。它工作得很好,我看到我的鎖工作,但這不是一個真正的我覺得很好的解決方案。也許有人可以做得更好?

1

您可能需要查看像MultithreadedTC這樣的測試框架 - 它允許您在測試過程中以編程方式控制流經不同線程的流量,以便在測試過程中引發競爭條件和超時。

+0

比我想要的重得多。我希望只有一個按鈕可以按下。 –

相關問題