<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)航:
     
    主站蜘蛛池模板: 亚洲精品无码久久久久久| 国产亚洲午夜高清国产拍精品| 亚洲成a人片在线观看无码专区 | 亚洲视频在线一区| 久久WWW免费人成—看片| 亚洲综合区小说区激情区| 成年大片免费高清在线看黄| 亚洲成a人片在线观看久| 免费视频精品一区二区| 伊人亚洲综合青草青草久热| 老司机精品免费视频| 亚洲国产三级在线观看| 无码国产精品一区二区免费3p| 亚洲天堂中文字幕| 国产92成人精品视频免费| 2017亚洲男人天堂一| 好吊妞在线新免费视频| 亚洲av无码专区在线电影天堂 | 亚洲综合色丁香麻豆| 国内精品免费麻豆网站91麻豆| 亚洲制服丝袜中文字幕| 免费视频淫片aa毛片| 无遮挡a级毛片免费看| 久久影视国产亚洲| 59pao成国产成视频永久免费| 亚洲一卡2卡4卡5卡6卡残暴在线| 德国女人一级毛片免费| 美女被免费视频网站a| 亚洲熟妇无码乱子AV电影| 污污网站免费观看| 中国亚洲呦女专区| 国产aⅴ无码专区亚洲av麻豆| 久久免费区一区二区三波多野| 亚洲欧洲尹人香蕉综合| 免费在线观看你懂的| 免费观看久久精彩视频| 亚洲人成网站在线在线观看| 亚洲一区二区三区影院 | 国产成人免费爽爽爽视频| 日产久久强奸免费的看| 亚洲综合区图片小说区|