<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    瘋狂

    STANDING ON THE SHOULDERS OF GIANTS
    posts - 481, comments - 486, trackbacks - 0, articles - 1
      BlogJava :: 首頁(yè) :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理

    Condition

    Posted on 2011-10-17 17:28 瘋狂 閱讀(676) 評(píng)論(0)  編輯  收藏 所屬分類: concurrent

    Condition(條件)Object 監(jiān)視器方法(waitnotifynotifyAll)分解成截然不同的對(duì)象,以便通過(guò)將這些對(duì)象與任意 Lock 實(shí)現(xiàn)組合使用,為每個(gè)對(duì)象提供多個(gè)等待 set (wait-set)。其中,Lock 替代了 synchronized 方法和語(yǔ)句的使用,Condition 替代了 Object 監(jiān)視器方法的使用。
    下面解釋下Condition api里面的例子(生產(chǎn)者,消費(fèi)者):

    public class ConditionTest {

     final Lock lock = new ReentrantLock();
         final Condition notFull  = lock.newCondition(); //生產(chǎn)者的前提條件,沒有達(dá)到次條件就阻塞
         final Condition notEmpty = lock.newCondition(); //消費(fèi)者的前提條件,沒有達(dá)到次條件就阻塞
      
         final Object[] items = new Object[100];
         int putptr, takeptr, count;
      //生產(chǎn)
         public void put(Object x) throws InterruptedException {
           lock.lock();
           try {
             while (count == items.length)//如果滿了,就讓需要條件為:沒滿的的線程(生產(chǎn)者)等
               notFull.await();
             items[putptr] = x;
             if (++putptr == items.length) putptr = 0;
             ++count;
             notEmpty.signal();//如果已經(jīng)生產(chǎn)了,就讓需要條件為不為空的線程(消費(fèi)者)執(zhí)行
           } finally {
             lock.unlock();
           }
         }
      //消費(fèi)
         public Object take() throws InterruptedException {
           lock.lock();
           try {
             while (count == 0)//如果為空就讓需要條件為不為空的線程(消費(fèi)者)等
               notEmpty.await();
             Object x = items[takeptr];
             if (++takeptr == items.length) takeptr = 0;
             --count;
             notFull.signal();//如果消費(fèi)了,就讓條件為不滿的線程(生產(chǎn)者)執(zhí)行
             return x;
           } finally {
             lock.unlock();
           }
         }
       }

     


    只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


    網(wǎng)站導(dǎo)航:
     
    主站蜘蛛池模板: 日日摸夜夜添夜夜免费视频| 亚洲美女一区二区三区| 免费国产在线观看不卡| 国产高清在线精品免费软件| 永久免费av无码网站大全| 女人张开腿等男人桶免费视频| 无人影院手机版在线观看免费| 永久免费av无码网站韩国毛片| 永久免费av无码不卡在线观看| 无码乱肉视频免费大全合集| 在线观看AV片永久免费| 成人免费视频网址| 四虎影视免费永久在线观看 | 亚洲人成人网站18禁| 亚洲熟妇无码一区二区三区导航| 亚洲一区二区三区写真| 国产精品亚洲天堂| 一区二区三区免费高清视频| 大地资源在线资源免费观看| 久久久久久国产精品免费无码| 亚洲一区免费在线观看| 免费特级黄毛片在线成人观看| 免费看国产一级片| 国产成人精品日本亚洲| 亚洲视频一区在线| 亚洲精品成a人在线观看☆| 黄色毛片免费观看| 免费视频成人手机在线观看网址| 182tv免费观看在线视频| 午夜高清免费在线观看| 亚洲女同成人AⅤ人片在线观看| 久久精品国产精品亚洲蜜月| 亚洲91精品麻豆国产系列在线| 色噜噜噜噜亚洲第一| 四虎国产精品免费永久在线| 免费观看黄色的网站| 国产午夜无码视频免费网站| 国产亚洲一区二区三区在线| 亚洲国产午夜精品理论片| 国产精品亚洲五月天高清| 久久这里只精品国产免费10|