Re: [問題] 猛虎一書第 18 題

看板java作者 (Alien)時間17年前 (2008/06/19 14:21), 編輯推噓1(101)
留言2則, 1人參與, 最新討論串2/2 (看更多)
※ 引述《HAWA11 (ㄟ)》之銘言: [43] : 正確答案是 會run出 0 2 4 6 : 我想問的是,為什麼在getResult的時候 如果result還沒好,進入wait() : 怎麼確定是他要的那個答案會來notify() : 例如我現在computations[1]要getResult, 然後wait() : 那如果computations[2]比computations[1]還快做完然後call notify() : 這樣不就亂了? : 可是我實際上跑這個程式時 不會出現這個狀況 : 雖然四個thread不一定是依序跑完 : 可是就是怎樣都不會出現我說的那個情況 : 由不同的thread來notify result : 不好意思,不知道這樣大家看的懂嗎 你要知道的是, declare 為 synchornized 的 member method, 意思是 synchronize(this) wait() 與 notify() 做的是 this.wait() 和 this.notify 所以 computation[2] 做的 notify() 是 notify 那些正在 wait computation[2] 的 thread, 而不是所有 thread alien -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 202.155.236.82

06/19 14:23, , 1F
是喔....我還以為是notify waiting pool裡面任一thread
06/19 14:23, 1F

06/19 14:25, , 2F
謝謝你的回答~
06/19 14:25, 2F
文章代碼(AID): #18MVhqGp (java)
文章代碼(AID): #18MVhqGp (java)