[問題] 如何讓兩個執行緒都結束才往下執行

看板java作者 (jsh770806)時間12年前 (2012/03/02 21:43), 編輯推噓3(309)
留言12則, 7人參與, 最新討論串1/1
我想設計一個有兩個執行緒分別跑出一個結果 然後把兩個結果合併起來形成我要的結論 所以我想要確定兩個執行緒都已經跑完了在繼續往下跑 不知道這樣的程式要怎麼樣設計 原本我想說應該是下面這樣 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

03/02 21:57, , 1F
你obj2沒有join,所以最後一行只會等obj1跑完就直接算了
03/02 21:57, 1F

03/02 22:00, , 2F
就算我放了obj2.join() 不是也就表示要等obj1跑完才跑
03/02 22:00, 2F

03/02 22:02, , 3F
obj2(假設我放obj1後面) 但我想兩個要一起跑
03/02 22:02, 3F

03/02 22:03, , 4F
不要等誰先執行完 才執行另一個
03/02 22:03, 4F

03/02 22:13, , 5F
啥 -_- ?
03/02 22:13, 5F

03/02 22:13, , 6F
不對喔,這樣應該是主執行緒會等obj1,obj2跑完才跑
03/02 22:13, 6F

03/02 22:15, , 7F
你的obj2已經start了 話說等60秒真讓人著急...
03/02 22:15, 7F

03/02 22:19, , 8F
個人認為這種需求應該用 wait / notify 方法來實作
03/02 22:19, 8F

03/02 22:22, , 9F
去看Thing in java以及,有lock這個東西可以用
03/02 22:22, 9F

03/03 08:11, , 10F
03/03 08:11, 10F

03/03 13:20, , 11F
阿你就弄個同步的紀錄變數就好啦~
03/03 13:20, 11F

03/04 00:19, , 12F
謝謝幾位大大的回復 我知道怎麼去設計我的程式了
03/04 00:19, 12F
文章代碼(AID): #1FKCvkVO (java)