面试官: 阻塞队列的底层实现有了解过吗? 说说看

前言

目前正在出一个Java多线程专题长期系列教程,从入门到进阶含源码解读, 篇幅会较多, 喜欢的话,给个关注❤️ ~

本节以ArrayBlockingQueue为例, 带大家看下阻塞队列是如何实现,一起来看下吧~

ArrayBlockingQueue 源码分析

构造函数

同样的,我们先从它的构造函数看起

  public void put(E e) throws InterruptedException {
        checkNotNull(e);
        final ReentrantLock lock = this.lock;
        lock.lockInterruptibly();
        try {
            // 如果元素满了 就阻塞
            while (count == items.length)
                notFull.await();
            // 否则入列    
            enqueue(e);
        } finally {
            lock.unlock();
        }
    }

结束语

本节主要给大家讲了ArrayBlockingQueue的源码实现,它的源码相对简单一些, 大家可以根据本节看下BlockingQueue其它的实现类。下一节, 带大家学习一下并发容器 ~

本篇文章来源于微信公众号: 程序员皮卡秋



微信扫描下方的二维码阅读本文

此作者没有提供个人介绍
最后更新于 2023-05-28