`
想gohome
  • 浏览: 2420 次
  • 性别: Icon_minigender_2
  • 来自: 深圳
最近访客 更多访客>>
社区版块
存档分类
最新评论

notify wait

 
阅读更多
一本书同时只能借给一个人。现在有一本书,图书馆已经把这本书借了张三。

    在简单的synchrnozed 同步机制下,李四如果想借,先要去图书馆查看书有没有还回来。李四是个心急的人,他每天都去图书馆查;而张三看书看得慢,过了半个月才把书还回来,结果李四在这半个月里全都白跑了,浪费了不少交通车费

    而如果使用wait/notify机制,李四就不用白忙了。他第一次去图书馆时发现书已借走,就回家静静等待(wait);张三把书还掉后,通知(notify)李四,李四去图书馆拿书即可。整个过程中,李四没有白跑,没浪费钱。

    回到计算机世界:
   
       书           --  临界资源,需互斥地访问
    张三,李四      --  两个竞争的线程
坐车去图书馆查书   --  轮询
      车费          --  CPU空间
      等待          --  wait
  通知下一个借书者   --  notify

    也就是说,若使用简单的synchonized机制实现互斥,会导致线程主动发起轮询,若N次轮询没有成功,就产生了N次的CPU空间浪费;如果加上了 wait/notify机制,就可以避免这些无谓的轮询,节省CPU的消耗。
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics