永发信息网

如何判断linkedblockingqueue取值到最后一个

答案:2  悬赏:10  手机版
解决时间 2021-03-23 01:37
如何判断linkedblockingqueue取值到最后一个
最佳答案


搜一下:如何判断linkedblockingqueue取值到最后一个
全部回答
概述 LinkedBlockingQueue是java concurrent包提供的另一个多线程安全的阻塞队列,与ArrayBlockingQueu相比,此队列的使用链表实现(不熟悉链表的同学,请查阅大学的数据结构课本),可以提供高效的并发读写性能。 数据结构 链表节点 既然是链表,那么肯定少不了节点,节点自然包括节点内容和next指针。jdk开发人员,设计的节点是这样的: static class Node<E> { E item; Node<E> next; Node(E x) { item = x; } } 在这里,用到了java范型的机制,用来保存不同类型的对象。 上述节点,提供了一个构造函数,用来传入需要保存的内容,这里的构造函数没有判断传入参数是否合法,因为在所有public方法中,已经判断过了,这里无需进行再次判断。 链表的指针 LInkedBlockingQueue中的链表,包含头指针和尾指针,其中: 头指针用来管理元素出队,和 take(), poll(), peek() 三个操作关联 尾指针用来管理元素入队,和 put(), offer() 两个操作关联 具体的数据结构定义如下: private transient Node<E> head; private transient Node<E> last; 链表的容量和大小 LinkedBlockingQueue是有大小限制的,当队列满后不能继续入队,同时,也有一个变量记录当前队列中的元素数量: private final int capacity; private final AtomicInteger count = new AtomicInteger(0); // 队列当前大小 注意:这里的count对象,是原子类型,而不是一般的int类型,与ArrayBlockingQueue中的不符,这是因为LinkedBlockingQueue使用读和写两把锁来控制并发操作,读和写可能同时修改count字段的值,而ArrayBlockingQueue只有一把锁用于控制读写操作,所以count对象是普通的,线程不安全的类型
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
内存条如何插,有什么讲究么?
河南安阳银星物流地址有知道的么?有点事想过
朱丽叶与梁山伯台词,关于梁祝的古典诗词?
家源住宿地址在哪,我要去那里办事,
周朴园反复提到“过去的事不要提了”,对其目
项链上英文meedom是什么意思
三万块三分的利息一年多少钱
写含有月的诗句有哪些,关于描写月亮的诗句
英文阿。。。
单选题秦岭一淮河以南大部分属于A.湿润区、亚
AKB48 ノーカン中文歌词
有个女孩子说找男朋友一定找个帅的,问题她长
长春米其林的轮胎哪里卖的便宜
卖炭翁,伐薪烧炭南山中。满面尘灰烟火色,两
世纪华联购物中心发耳店地址在什么地方,想过
推荐资讯
丁酉年八月二十五月下午三点半,按八字是什么
白雪亭我想知道这个在什么地方
延庆 妫水河(妫河)河岸能烧烤吗?
刘翔当年的成就比孙杨大的多 凭什么刘翔被
王者荣耀 有韩版吗 求解答
老年人经常头晕,吃什么药有效?
有关争气的诗句
判断题经过A、B、C三点可以画三条直线.
西单打车到西站多少次
百善孝为先的有关诗词,关于黄山的诗词佳句
下列句子中划线词语使用不恰当的一项是(2分
天台新三中寝室有没有空调或电风扇?
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?