Re: [問題] 猛虎一書第 18 題
※ 引述《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
06/19 14:23, 1F
→
06/19 14:25, , 2F
06/19 14:25, 2F
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 2 之 2 篇):