如何进行LinkedBlockingQueue的put操作
发表于:2025-02-05 作者:千家信息网编辑
千家信息网最后更新 2025年02月05日,这篇文章将为大家详细讲解有关如何进行LinkedBlockingQueue的put操作,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。JDK提供了7大阻
千家信息网最后更新 2025年02月05日如何进行LinkedBlockingQueue的put操作
这篇文章将为大家详细讲解有关如何进行LinkedBlockingQueue的put操作,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。
JDK提供了7大阻塞队列,常用于实现生产者和消费者,LinkedBlockingQueue是最常用之一.
public void put(E e) throws InterruptedException { if (e == null) throw new NullPointerException(); int c = -1; Nodenode = 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安全错误
数据库的锁怎样保障安全
小白勇士讲网络安全
网络技术团队昵称
梦享网络技术
做软件开发的流程管理
河北省网络安全总队队长
网络安全红队攻击
软件开发 如何提升利润
软件开发项目人员职责分工
网站网络安全工作汇报
程序员软件开发和运营哪个好
顺义区数据网络技术哪家好
学习通数据库开发答案
数据库应用基础第二版
中国移动的网络安全
计算机网络技术学了能干嘛
儿童网络安全做到三不
网络安全和信息化是
陕西省网络安全协会会长
db2数据库表怎么解锁
虚拟局域网软件开发
做软件开发的流程管理
数据库设计不包括什么阶段
大陆集团汽车软件开发
墨魂服务器
龙之谷登录服务器连接不上
怎么查看服务器系统架构
上虞财务软件开发找哪家
数据库数据存储于磁盘
hal法国数据库
机器软件开发是什么意思