A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© zclove898 高级黑马   /  2011-12-19 16:42  /  1830 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 zclove898 于 2011-12-19 17:16 编辑

对多线程的等待唤醒机制的概念的理解还是有点模糊,希望能通俗的讲解一下

评分

参与人数 1技术分 +1 收起 理由
王德云 + 1

查看全部评分

3 个回复

倒序浏览
宋双 黑马帝 2011-12-19 16:53:09
沙发
简单说就是:如果条件不满足,则等待。当条件满足时,等待该条件的线程将被唤醒。
回复 使用道具 举报
我在网上找的.希望能帮助你:

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

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

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

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

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

评分

参与人数 1技术分 +1 收起 理由
admin + 1

查看全部评分

回复 使用道具 举报
窦超 黑马帝 2011-12-19 17:06:03
板凳
条件满足就唤醒,否则就等待

评分

参与人数 1技术分 +1 收起 理由
杨强 + 1 精辟

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马