Java并发编程札记-(五)JUC容器-01概述
来源:互联网 发布:傅园慧网络直播完整版 编辑:程序博客网 时间:2024/04/20 10:52
今天开始学习JUC容器。JUC提供了用于多线程上下文中的Collection实现与高效的、可伸缩的、线程安全的非阻塞FIFO队列。参考JDK1.8,画出下图。
List
JUC容器中List的实现只有CopyOnWriteArrayList。CopyOnWriteArrayList相当于线程安全的ArrayList。当期望的读数远远大于列表的更新数时, CopyOnWriteArrayList优于同步的ArrayList。
Set
JUC容器中Set的实现只有CopyOnWriteArraySet与ConcurrentSkipListSet。相当于线程安全的HashSet。当set 大小通常保持很小,只读操作远多于可变操作,需要在遍历期间防止线程间的冲突时,CopyOnWriteArraySet优于同步的HashSet。ConcurrentSkipListSet是一个基于 ConcurrentSkipListMap 的可缩放并发 NavigableSet 实现。set的元素可以根据它们的自然顺序进行排序,也可以根据创建set时所提供的 Comparator 进行排序,具体取决于使用的构造方法。CopyOnWriteArraySet的实现依赖于CopyOnWriteArrayList。ConcurrentSkipListSet的实现依赖于ConcurrentSkipListMap。所以ConcurrentSkipListSet会在ConcurrentSkipListMap之后学习。
Map
JUC容器中Map的实现只有ConcurrentHashMap和ConcurrentSkipListMap。
ConcurrentHashMap是线程安全的哈希表,相当于线程安全的HashMap。ConcurrentSkipListMap是线程安全的有序的哈希表,相当于线程安全的TreeMap。
Queue
JUC容器中Queue的常用实现有ArrayBlockingQueue, LinkedBlockingQueue, LinkedBlockingDeque, ConcurrentLinkedDeque和ConcurrentLinkedQueue。
- ArrayBlockingQueue是一个由基于数组的、线程安全的、有界阻塞队列。
- LinkedBlockingQueue是一个基于单向链表的、可指定大小的阻塞队列。
- LinkedBlockingDeque是一个基于单向链表的、可指定大小的双端阻塞队列。
- ConcurrentLinkedDeque是一个基于双向链表的、无界的队列。
- ConcurrentLinkedQueue是一个基于单向链表的、无界的队列。
本文就讲到这里,想了解Java并发编程更多内容请参考:
- Java并发编程札记-目录
- Java并发编程札记-(五)JUC容器-01概述
- Java并发编程札记-(五)JUC容器-02CopyOnWrite
- Java并发编程札记-(五)JUC容器-03ConcurrentHashMap
- Java并发编程札记-(二)JUC概述
- Java并发编程札记-(三)JUC原子类-01概述
- Java并发编程札记-(四)JUC锁-01概述
- Java并发编程札记-(四)JUC锁-03AQS
- Java并发编程札记-(四)JUC锁-04Condition简介
- Java并发编程札记-(四)JUC锁-05ReentrantReadWriteLock简介
- Java并发编程札记-(四)JUC锁-06LockSupport
- Java并发编程札记-(四)JUC锁-08CountDownLatch
- Java并发编程札记-(四)JUC锁-09CyclicBarrier
- Java并发编程札记-(四)JUC锁-10Semaphore简介
- java并发编程(五)----(JUC)ReentrantLock
- Java并发编程札记-(三)JUC原子类-02原子方式更新单个变量
- Java并发编程札记-(三)JUC原子类-03原子方式更新数组
- Java并发编程札记-(三)JUC原子类-04原子方式更新引用
- Java并发编程札记-(三)JUC原子类-06JDK1.8新增:LongAdder、DoubleAdder、LongAccumulator、DoubleAccumulator
- 将数据归一化到任意区间范围的方法
- 使用Elasticsearch的java api,操作elasticsearch
- ubuntu tomcat启用80和443端口
- 虚拟机下固定ubuntu ip 地址
- 云计算说明书
- Java并发编程札记-(五)JUC容器-01概述
- 第二行代码学习笔记——第一章:开始启程——你的第一行Android代码
- Contour Detection and Hierarchical Image Segmentation 源码编译运行
- HDU 2709.Sumsets
- Java基础:正则表达式
- jQuery animate()
- 图论(二):图的四种最短路径算法
- IDEA提交到码云
- 使用Django模板实现ThinkPHP中的success及error的模板