当前位置:首页> 行业热点 >

并发编程:并发容器,我们一起了解一下!_当前热闻

时间:2023-06-30 09:25:14    来源:今日头条
一、BlockingQueue

在所有的并发容器中,BlockingQueue是最常见的一种。BlockingQueue是一个带阻塞功能的队列,当入队列时,若队列已满,则阻塞调用者;当出队列时,若队列为空,则阻塞调用者。

在Concurrent包中,BlockingQueue是一个接口,有许多个不同的实现类,如图所示。

1、ArrayBlockingQueue是一个用数组实现的环形队列,在构造方法中,会要求传入数组的容量。


(资料图片仅供参考)

2、LinkedBlockingQueue是一种基于单向链表的阻塞队列。因为队头和队尾是2个指针分开操作的, 所以用了2把锁+2个条件,同时有1个AtomicInteger的原子变量记录count数。

3、PriorityBlockingQueue 队列通常是先进先出的,而PriorityQueue是按照元素的优先级从小到大出队列的。正因为如此, PriorityQueue中的2个元素之间需要可以比较大小,并实现Comparable接口。

4、DelayQueue即延迟队列,也就是一个按延迟时间从小到大出队的PriorityQueue。所谓延迟时间, 就是“未来将要执行的时间”减去“当前时间”。为此,放入DelayQueue中的元素,必须实现Delayed接 口。

5、SynchronousQueue是一种特殊的BlockingQueue,它本身没有容量。先调put(...),线程会阻塞; 直到另外一个线程调用了take(),两个线程才同时解锁,反之亦然。对于多个线程而言,例如3个线程, 调用3次put(...),3个线程都会阻塞;直到另外的线程调用3次take(),6个线程才同时解锁,反之亦然。

二、BlockingDeque

BlockingDeque定义了一个阻塞的双端队列接口,如下所示。

该接口继承了BlockingQueue接口,同时增加了对应的双端队列操作接口。该接口只有一个实现, 就是LinkedBlockingDeque。

三、CopyOnWrite

CopyOnWrite指在“写”的时候,不是直接“写”源数据,而是把数据拷贝一份进行修改,再通过悲观锁或者乐观锁的方式写回。

那为什么不直接修改,而是要拷贝一份修改呢? 这是为了在“读”的时候不加锁。

1、CopyOnWriteArrayList

和ArrayList一样,CopyOnWriteArrayList的核心数据结构也是一个数组。

2、CopyOnWriteArraySet

CopyOnWriteArraySet 就是用 Array 实现的一个 Set,保证所有元素都不重复。其内部是封装的一 个CopyOnWriteArrayList。

标签:

上海:5月22日起,地面公交和轨道交通有条件逐步恢复运营

  上海:5月22日起,地面公交和轨道交通有条件逐步恢复运营  5月16日上午10:00,上海举行新冠肺炎疫情防控工作新闻发布会,上海市副市

2022-05-16

上海:6月1日至中下旬全面恢复正常生产生活秩序

  上海下一步防控分为三个阶段,6月1日至中下旬全面恢复正常生产生活秩序  5月16日上午10:00,上海举行新冠肺炎疫情防控工作新闻发布会

2022-05-16

瞒着父母当志愿者 她在救援车上完成毕业答辩

  她在救援车上完成毕业答辩 青岛小嫚瞒着父母当志愿者支援上海抗疫  近日,青岛小嫚王若琦在援沪救援车上完成大学毕业答辩的故事,引

2022-05-16

上海奉贤将逐步有序恢复正常生产生活秩序

  中新网5月16日电 据“上海奉贤”微信公众号消息,16日,上海市奉贤区新冠肺炎疫情防控工作领导小组办公室发布《告奉贤市民书》表示,

2022-05-16

上海:已经有15区实现社会面清零 封控区总人数降到100万人以内

  今天(5月16日)上午举行的上海市疫情防控工作新闻发布会上,上海市副市长宗明表示,本轮疫情发生以来,上海市毫不动摇坚持动态清零总方

2022-05-16

西宁公安严厉打击涉疫违法犯罪 依法处理案件72起123人

  中新网西宁5月16日电(祁增蓓)“我们严厉打击涉疫违法犯罪,5月6日以来,及时依法处理殴打辱骂防疫人员、伪造通行证件、逃避封控管理、

2022-05-16

专家:发生狂犬病Ⅲ级暴露后 需尽早使用被动免疫制剂

  中新网广州5月16日电 (蔡敏婕 何宇航)“狂犬病暴露预防处置研讨会”15日在广州举行。广东省预防医学会首席专家张永慧称,接种狂犬病

2022-05-16

孩子居家上体育课,影响楼下居家办公,算侵权扰民吗?

  “请问楼上是在跳绳吗?一蹦一蹦的,还有抽地的声音。”“不好意思,孩子在上居家体育课,有几个动作力量控制不好,已经结束了。”“剧

2022-05-16

甘肃渭源:千年渭水文化蕴“写生热” 校地合作塑学生文化涵养

  中新网甘肃渭源5月16日电 (张婧)“渭水汤汤,源远流长。”甘肃省定西市渭源县作为黄河最大支流渭河的发源地,这里民风淳厚、民居自然

2022-05-16

5月16日起 西宁市部分区域有序开放

  中新网西宁5月16日电(祁增蓓)西宁市新冠肺炎疫情防控处置工作指挥部15日晚宣布,16日起,西宁部分区域实行有序开放。  据悉,5月16日

2022-05-16