亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

為何ArrayBlockingQueue中的ReentranLock對象無需實例化?

為何ArrayBlockingQueue中的ReentranLock對象無需實例化?

阿Dine 2018-09-08 19:18:43
看了ArrayBlockingQueue的源碼public?class?ArrayBlockingQueue<E>?extends?AbstractQueue<E>????????implements?BlockingQueue<E>,?java.io.Serializable?{ ? ????final?Object[]?items;?? ????int?takeIndex;?? ????int?putIndex;??? ????int?count;???? ????final?ReentrantLock?lock;????/**notEmpty條件對象,用于通知take方法隊列已有元素,可執行獲取操作?*/ ????private?final?Condition?notEmpty;???? ????private?final?Condition?notFull;??? ???????迭代器 ?????*/ ????transient?Itrs?itrs?=?null; ????public?void?put(E?e)?throws?InterruptedException?{ ?????checkNotNull(e);?????? ?????final?ReentrantLock?lock?=?this.lock;??//????????? ??????lock.lockInterruptibly(); ??????try?{?????????? ??????????while?(count?==?items.length)??????????????//將當前調用線程掛起,添加到notFull條件隊列中等待喚醒 ??????????????notFull.await(); ??????????enqueue(e);//如果隊列沒有滿直接添加。。 ??????}?finally?{ ??????????lock.unlock(); ??????} ??} }為甚么類的屬性里沒有ReentrantLock lock = new ReentrantLock();卻可以在put()中直接指定ReentrantLock lock=this.lock;?
查看完整描述

3 回答

已采納
?
慕雪5558698

TA貢獻3條經驗 獲得超4個贊

好好看看源碼吧你

查看完整回答
反對 回復 2018-09-09
  • 阿Dine
    阿Dine
    老哥 我看了好久 還是看不懂 請教一下您 我很想知道答案
  • 阿Dine
    阿Dine
    哦!??! 我看到了?。?原來在構造器里?。。。?!
?
誰動了我的蘿卜

TA貢獻6條經驗 獲得超1個贊

初始化的時候調用https://img1.sycdn.imooc.com//5ca56486000196e213080448.jpg

查看完整回答
反對 回復 2019-04-04
  • 3 回答
  • 0 關注
  • 1253 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號