并发编程(二)-JUC

2021-07-28  本文已影响0人  Alan1914

1. 并发容器

1.1. BlockingQueue

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

在 concurrent BlockingQueue是一个interface

image.png

1.2. BlockingDeque

1.3. CopyOnWrite

CopyOnWrite指在“写”的时候,不是直接“写”源数据,而是把数据拷贝一份进行修改,再通过悲观
锁或者乐观锁的方式写回。
那为什么不直接修改,而是要拷贝一份修改呢?
这是为了在“读”的时候不加锁。

1.4. ConcurrentLinkedQueue/Deque

AQS内部的阻塞队列实现原理:基于双向链表,通过对head/tail进行CAS操作,实现入队和出队。
ConcurrentLinkedQueue 的实现原理和AQS 内部的阻塞队列类似:同样是基于 CAS,同样是通过
head/tail指针记录队列头部和尾部,但还是有稍许差别。

1.5. ConcurrentHashMap

HashMap通常的实现方式是“数组+链表”,这种方式被称为“拉链法”。ConcurrentHashMap在这个
基本原理之上进行了各种优化。

1.6. ConcurrentSkipListMap/Set

ConcurrentHashMap 是一种 key 无序的 HashMap,ConcurrentSkipListMap则是 key 有序的,
实现了NavigableMap接口,此接口又继承了SortedMap接口。

2. 同步工具类

3. Atomic类

4. Lock与Condition

4.1. 互斥锁

4.2. 读写锁

4.3. Condition

4.4. StampedLock

上一篇 下一篇

猜你喜欢

热点阅读