看板 java 關於我們 聯絡資訊
我想設計一個有兩個執行緒分別跑出一個結果 然後把兩個結果合併起來形成我要的結論 所以我想要確定兩個執行緒都已經跑完了在繼續往下跑 不知道這樣的程式要怎麼樣設計 原本我想說應該是下面這樣 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
arrenwu:用 Thread Pools http://tinyurl.com/7wff55j 03/03 08:11
swpoker:阿你就弄個同步的紀錄變數就好啦~ 03/03 13:20
jsh770806:謝謝幾位大大的回復 我知道怎麼去設計我的程式了 03/04 00:19