2013-10-11 84 views
0

我需要從這行代碼我想執行一個10循環的解決方案,並在10我希望它system.exit();我的GUI剛剛退出,需要幫助!目前該行僅是退出與它沒有任何執行我的循環剛剛退出

int counter = 0; 
      while(true){ 
       counter++; 
      for (int i = 0; i < 5; i++) { 
       if(counter < 10){ 
        new Thread(new Person(bathroom, !isMale)).start(); 
        new Thread(new Person(bathroom, isMale)).start(); 
       } 
       else{ 
        System.exit(0); 
       } 

      } 

回答

3
System.exit(0); 

System.exit將退出所有線程,包括你已經開始了的。

您應該等待所有線程在退出之前停止。根據它們的組織方式,我可以計算出要開始的線程數,並讓它們全部等待最後主線程的倒計時鎖存器,或者更簡單但更棘手的是,主線程包括:

while(true){ 

} 

最後。

+0

是的,我仍然需要有條件停止它?我的意思是我的病情只想在計數器10遇到時退出。我想如果計數器小於10線程將啓動不是嗎?那麼如果它是10,它應該做系統性的,倒計時閂鎖實際上意味着什麼? – ProblematicSolution

+1

@ProblematicSolution我不認爲你明白線程的要點是什麼。一個線程將獨立於其他線程運行,所以當你啓動它時它將獨立運行。這裏的要點是,你需要在嘗試應用線程之前學習線程概念。 – hexafraction

0

你已經開始了新的主題後,他們會拿自己的課程..

你可以使用join()函數,以確保他們完成運行..