如何进行LinkedBlockingQueue的put操作
发表于:2025-12-05 作者:千家信息网编辑
千家信息网最后更新 2025年12月05日,这篇文章将为大家详细讲解有关如何进行LinkedBlockingQueue的put操作,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。JDK提供了7大阻
千家信息网最后更新 2025年12月05日如何进行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安全错误
数据库的锁怎样保障安全
网络安全五大知识
网络安全宣传日手抄报模板
网络安全者包括
网络安全自渗透工具应用
性价比最高数据库
绿色全光网络技术联盟会
服务器安全狗 discuz
hive是例型数据库吗
幼儿园网络安全教育宣传活动
对日软件开发为什么多为外派
武汉国家网络安全基地怎么样
黑莓bb10软件开发
net数据库地址
erp软件开发哪家公司好
棋牌软件开发需要多久
江苏连云港关于网络安全
数据库mdf怎么看
中原电子软件开发岗加班吗
璨扬网络技术服务有限公司
sql 数据库无法定时备份
大学网络安全班会ppt
广州培训软件开发教程
数据库技术应用及特点高中
小学生网络安全宣传班会记录
平板软件开发注意事项
精益软件开发原则 遵循计划
2012 网络安全检查要求
2017网络安全技术峰会
内蒙古手机app软件开发
永恒之塔怀旧服17173数据库