千家信息网

如何进行LinkedBlockingQueue的put操作

发表于:2026-11-03 作者:千家信息网编辑
千家信息网最后更新 2026年11月03日,这篇文章将为大家详细讲解有关如何进行LinkedBlockingQueue的put操作,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。JDK提供了7大阻
千家信息网最后更新 2026年11月03日如何进行LinkedBlockingQueue的put操作

这篇文章将为大家详细讲解有关如何进行LinkedBlockingQueue的put操作,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。

JDK提供了7大阻塞队列,常用于实现生产者和消费者,LinkedBlockingQueue是最常用之一.

public void put(E e) throws InterruptedException {    if (e == null) throw new NullPointerException();    int c = -1;    Node node = new Node(e);    final ReentrantLock putLock = this.putLock;    final AtomicInteger count = this.count;    // 可中断的获取锁操作,即线程由于未获取到锁而处于Blocked状态时,线程可以被中断而不再继续等待.    putLock.lockInterruptibly();    try {        // 如果队列中元素数量和队列容量相等,即此时队列已经满了,则当前线程需要等待.        // 之所以使用while循环,是当线程被唤醒之后,依然需要判断队列是否满.        // 即只有队列不满的情况下,当前线程才可以添加元素                while (count.get() == capacity) {            notFull.await();        }        // 入队,即添加元素        enqueue(node);        c = count.getAndIncrement();        if (c + 1 < capacity)            // 通知其他生产者            notFull.signal();    } finally {        putLock.unlock();    }    if (c == 0)        // 通知消费者        signalNotEmpty();}

总结一下添加操作流程

1.获取putLock锁2.如果队列已满, 则等待(notFull.await())3.元素入队4.当前生产者添加元素之后如果队列还没有满, 则通知其他生产者添加元素(notFull.signal())5.释放putLock锁6.如果队列中已经有元素,则通知消费者

首先是获取锁,拿到锁之后,如果队列满了则等待,如果队列不满则添加元素,

添加元素之后,如果队列还没有满,则通知其他生产者

添加元素之后,如果队列已经有元素了,则通知消费者

关于如何进行LinkedBlockingQueue的put操作就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。

队列 元素 生产者 线程 生产 消费者 消费 内容 文章 更多 知识 篇文章 不错 之所以 只有 容量 常用 情况 数量 流程 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 苏州找大状互联网科技有限公司 互联网科技活动banner 科技互联网龙头 科技类互联网 港股互联网科技股 汇久创客互联网科技 互联网科技小额贷款 青岛中康互联网医疗科技有限公司 创业天下互联网科技有限公司 福建科技产业互联网发展 深圳市优智互联网科技有限公司 深圳无忧互联网科技 卡尔迅互联网科技有限公司 江苏互联网智能科技产品出厂价 北京互联网科技类企业分布 互联网科技职业技能培训学校 深圳互联网科技园地址 杭州科技互联网公司有哪些 银川新华互联网科技学校招聘 知域互联网科技有限公司官网 高科技与互联网 互联网女皇 腾讯科技 上游互联网科技 顺网科技2021年互联网排名 央行互联网金融科技公司 字节跳动和互联网科技 长沙茂晟互联网科技有限公司 卡尔迅互联网科技有限公司 长沙易易互联网科技有限公司 每日互联网科技新闻
0