Java 并发容器
目录
ConcurrentHashMap
并发安全版HashMap,java7中采用分段锁技术来提高并发效率,默认分16段。Java8放弃了分段锁,采用CAS,同时当哈希冲突时,当链表的长度到8时,会转化成红黑树。
CopyOnWriteArrayList
CopyOnWriteArraySet
ConcurrentLinkedQueue
基于链接节点的无界线程安全队列,它采用先进先出的规则对节点进行排序,当我们添加一个元素的时候,它会添加到队列的尾部,当我们获取一个元素时,它会返回队列头部的元素。它采用cas算法来实现。
ConcurrentLinkedDeque
ConcurrentSkipListMap
ConcurrentSkipListSet
BlockingQueue
阻塞队列是一个支持两个附加操作的队列,这两个附加操作支持阻塞的插入和移除方法。
- 支持阻塞的插入方法:当队列满时,队列会阻塞插入元素的线程,直到队列不满。
- 支持阻塞的移除方法:当队列空时,获取元素的线程会等待队列变为非空。
常用于生产者和消费者场景,生产者是往队列里添加元素的线程,消费者是从队列里取元素的线程。