ArrayBlockingQueue原理分析-put方法
生活随笔
收集整理的這篇文章主要介紹了
ArrayBlockingQueue原理分析-put方法
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
put方法和add方法功能一樣,差異是put方法如果隊列滿了,會阻塞。這個在最開始的時候說過。接下來看一下它的實現邏輯
public void put(E e) throws InterruptedException { checkNotNull(e);final ReentrantLock lock = this.lock; lock.lockInterruptibly(); //這個也是獲得鎖,但是和lock的區別是,這個方法優先允許在等待時由其他線程調用等待線程的interrupt方法來中斷等待直接返回。而lock方法是嘗試獲得鎖成功后才響應中斷 try { while (count == items.length) notFull.await();//隊列滿了的情況下,當前線程將會被notFull條件對象掛起加到等待隊列中 enqueue(e); } finally { lock.unlock(); } }?
超強干貨來襲 云風專訪:近40年碼齡,通宵達旦的技術人生總結
以上是生活随笔為你收集整理的ArrayBlockingQueue原理分析-put方法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: ArrayBlockingQueue原理
- 下一篇: ArrayBlockingQueue原理