• 手机版

    扫码体验手机版

  • 微信公众号

    扫码关注公众号

国内首家协议开发

软芯音视解码保护平台

在线
客服

发布
需求

在线
聊天

天盟
APP

天盟APP下载

关注
微信

微信扫一扫访问
顶部

为何ArrayBlockingQueue中的ReentranLock对象无需实例化?

看了ArrayBlockingQueue的源码

public class ArrayBlockingQueue extends AbstractQueue        implements BlockingQueue, 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;?

免责声明:本内容仅代表回答会员见解不代表天盟观点,请谨慎对待。

版权声明:作者保留权利,不代表天盟立场。

使用道具 举报

全部参与2

好好看看源码吧你

使用道具 举报

初始化的时候调用 185002ue2qxq5qq2yqv4k7.jpg

使用道具 举报

发新帖

发布任务需求已有1031167位用户正在使用天盟网服务

发布分类: *
任务预算: *
需求内容: *
手机号码: *
任务商家报价为
  • 预算价 :
  • 成交价 :
  • 完工期 :
  • 质保期 :

* 最终任务项目以服务商报价、双方协商为准!