作者adrianshum (Alien)
看板java
标题Re: [问题] 猛虎一书第 18 题
时间Thu Jun 19 14:21:39 2008
※ 引述《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
1F:推 HAWA11:是喔....我还以为是notify waiting pool里面任一thread 06/19 14:23
2F:→ HAWA11:谢谢你的回答~ 06/19 14:25