当前位置:首页 > 编程笔记 > 正文
已解决

BlockingQueue解析

来自网友在路上 148848提问 提问时间:2023-11-02 16:59:12阅读次数: 48

最佳答案 问答题库488位专家为你答疑解惑

BlockingQueue其实就是阻塞队列,是基于阻塞机制实现的线程安全的队列。

BlockingQueue不同于普通的Queue的区别主要是:

  1. 通过在入队和出队时进行加锁,保证了队列线程安全
  2. 支持阻塞的入队和出队方法:当队列满时,会阻塞入队的线程,直到队列不满;当队列为空时,会阻塞出队的线程,直到队列中有元素。

支持4种方法

BlockingQueue的5种实现类

ArrayBlockingQueue阻塞实现

    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方法进行入队操作enqueue(e);} finally {// 释放锁lock.unlock();}}

查看全文

99%的人还看了

猜你感兴趣

版权申明

本文"BlockingQueue解析":http://eshow365.cn/6-30365-0.html 内容来自互联网,请自行判断内容的正确性。如有侵权请联系我们,立即删除!