2015-05-30 26 views
3

我試圖做一個簡單的代碼來模擬使用java的DB2數據庫上的併發連接。我當前的代碼看起來有點像這樣:使java多線程等待,直到輸入

class TheThread implements Runnable{ 
@override 
public void run(){ 
    //make the database connection 
    //need to pause here until any button pressed 
    //execute query to the database 
} 
} 

程序將同時進行幾百個到數千個線程,因此我想,以確保所有線程所以它真的是在同一時間處理執行查詢之前連接。

我該怎麼做?

+0

當按下任何按鈕使用的CyclicBarrier,所有線程應該啓動,或只有一個?如果一個,任何一個或某個特定的線程? –

+0

所有這些,我設法通過使用Cyclicbarrier來做到這一點。謝謝 –

回答

1

您可以從java.util.concurrent包

static CyclicBarrier b = new CyclicBarrier(nConnections); 

public void run() { 
    // make the database connection 
    b.await(); //threads will stop here untill nConnections are opened 
    ... 
+0

cyclicbarrier會讓所有的線程等待,直到每個線程都到達每個線程中的障礙點,並且當所有線程都到達了這個點時它將自動繼續,對吧?我需要讓我的代碼等待用戶輸入,因爲它將在多臺機器上運行,以允許進行更多的併發連接,並且在按下按鈕後,將幾乎同時開始。有沒有辦法讓它等待輸入? –

+0

---編輯謝謝,我解決了我的問題,使用此解決方案。事實證明,我只需要創建一個不會來到屏障的線程,直到我按下一個按鈕,我多麼傻,謝謝你,我的好先生 –