作者jsh770806 (jsh770806)
看板java
標題[問題] 如何讓兩個執行緒都結束才往下執行
時間Fri Mar 2 21:43:07 2012
我想設計一個有兩個執行緒分別跑出一個結果
然後把兩個結果合併起來形成我要的結論
所以我想要確定兩個執行緒都已經跑完了在繼續往下跑
不知道這樣的程式要怎麼樣設計
原本我想說應該是下面這樣
Thread1 obj1 = new Thread1(alpha,times/2);
Thread1 obj2 = new Thread1(alpha,times/2);
obj1.start();
try{
obj2.start();
obj1.join();
}catch(Exception e){}
System.out.println( (obj1.showSum()+obj2.showSum())/times);
但是想了一下 似乎不是我想要的結果
因為join() 是指等這個執行緒結束在去執行其他的執行緒
而我是希望可以兩個執行緒一起跑 等兩個都跑完了 再去執行最後一行
但是我不知道該怎麼樣設計這樣一個程式
不知道版上的大大 可不可以給一些 提示 謝謝
小弟是java新手 不知道問題會不會很爛 如果很爛只好請版上的大大多包涵...
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.113.127.203
→ awert:你obj2沒有join,所以最後一行只會等obj1跑完就直接算了 03/02 21:57
→ jsh770806:就算我放了obj2.join() 不是也就表示要等obj1跑完才跑 03/02 22:00
→ jsh770806:obj2(假設我放obj1後面) 但我想兩個要一起跑 03/02 22:02
→ jsh770806:不要等誰先執行完 才執行另一個 03/02 22:03
→ awert:啥 -_- ? 03/02 22:13
→ mars90226:不對喔,這樣應該是主執行緒會等obj1,obj2跑完才跑 03/02 22:13
→ mars90226:你的obj2已經start了 話說等60秒真讓人著急... 03/02 22:15
→ uziel:個人認為這種需求應該用 wait / notify 方法來實作 03/02 22:19
推 LaPass:去看Thing in java以及,有lock這個東西可以用 03/02 22:22
推 swpoker:阿你就弄個同步的紀錄變數就好啦~ 03/03 13:20
→ jsh770806:謝謝幾位大大的回復 我知道怎麼去設計我的程式了 03/04 00:19