> For the complete documentation index, see [llms.txt](https://eric-zhang-seattle.gitbook.io/mess-around/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://eric-zhang-seattle.gitbook.io/mess-around/java-concurrency/overview/concurrent_collections.md).

# Concurrent collections

* [Java Concurrent Utilities - JCU](#java-concurrent-utilities---jcu)
  * [List](#list)
  * [Map](#map)
  * [Set](#set)
  * [Queue](#queue)

## Java Concurrent Utilities - JCU

### List

* CopyOnWriteArrayList: It will have two lists inside. Each time a write operation happens, a new copied list will be created for write operations. Read operations will be performed on the original list

### Map

* ConcurrentHashMap: key not ordered
* ConcurrentSkiplistMap: key ordered

### Set

* CopyOnWriteArraySet
* ConcurrentSkipListSet

### Queue

**Single end queue**

* Blocking queue:
  * ArrayBlockingQueue: array as inside queue
  * LinkedBlockingQueue: list as inside queue
  * SynchronousQueue: No queue inside
  * LinkedTransferQueue: combination of synchronousQueue and LinkedBlockingQueue
* PriorityBlockingQueue
* DelayQueue

**Deque**

* BlockingDeque
* ConcurrentLinkedQueue
* ConcurrentLinkedDeque
