准备新写个文集《JAVA并发容器源码分析》,套路还是采用:先翻译源码,再分析技术实现。
写几个常用到的并发容器:ConcurrentHashMap、CopyOnWriteArrayList、LinkedBlockingQueue。

并发容器:

是专门针对多线程并发设计的,使用了锁分段技术,只对操作的位置进行同步操作,
但是其他没有操作的位置其他线程仍然可以访问,提高了程序的吞吐量。
采用了CAS算法、部分代码使用synchronized锁保证线程安全。

ConcurrentHashMap

JDK6与JDK7中采用一种更加细粒度的加锁机制Segment“分段锁”,JDK8中采用CAS无锁算法。

CopyOnWriteArrayList

对读操作不加锁,对写操作,先复制一份新的集合,在新的集合上面修改,然后将新集合赋值给旧的引用,
并通过volatile 保证其可见性,写操作的锁采用:ReentrantLock。

LinkedBlockingQueue

通过ReentrantLock实现线程安全,通过Condition实现阻塞和唤醒,基于链表实现的可阻塞的FIFO队列。