如何进行LinkedBlockingQueue的put操作
发表于:2024-11-12 作者:千家信息网编辑
千家信息网最后更新 2024年11月12日,这篇文章将为大家详细讲解有关如何进行LinkedBlockingQueue的put操作,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。JDK提供了7大阻
千家信息网最后更新 2024年11月12日如何进行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安全错误
数据库的锁怎样保障安全
淮安品质联想服务器厂家直供
穿越火线预备服务器怎么进
黄埔网络安全运维费用
软件开发时间对业务有影响吗
软件开发运行总监
对二甲苯物竞数据库
mssql 数据库压缩
数据库物理设计论文
苹果8连接服务器失败
网络安全和防范感_想
2020年网络安全工作要点
服务器证书无效 淘宝
江阴洋葱头网络技术有限公司
plmsap数据库
火牛网络技术有限公司
vc数据库2010
一朵云互联网科技有限公司
mc多人服务器
猫和老鼠如何延迟服务器
河南高科技软件开发行业标准
铜梁区网络软件开发流程要求
嘉峪关网络技术公司
武威软件开发
pycharm中连接数据库语句
银行web软件开发笔试
数据库是结构化的数据集合对吗
汕头智能软件开发设计
连接hana数据库
美国swims成绩数据库
关系型数据库用在哪些地方