我將JUC包中的集合類劃分爲3部分來進行說明。在簡單的瞭解JUC包中集合類的框架以後,後面的章節再逐步對各個類進行介紹。java
List和Set
Map
Queue
- 全網惟一一個從0開始幫助Java開發者轉作大數據領域的公衆號~
- 公衆號大數據技術與架構或者搜索import_bigdata關注,大數據學習路線最新更新,已經有不少小夥伴加入了~
List和Set
JUC(java.util.concurrent)集合包中的List和Set實現類包括:數組
- CopyOnWriteArrayList
- CopyOnWriteArraySet
- ConcurrentSkipListSet
- ConcurrentSkipListSet稍後在說明Map時再說明,
- CopyOnWriteArrayList和CopyOnWriteArraySet的框架以下圖所示:
CopyOnWriteArrayList至關於線程安全的ArrayList,它實現了List接口。CopyOnWriteArrayList是支持高併發的。安全
CopyOnWriteArraySet至關於線程安全的HashSet,它繼承於AbstractSet類。架構
CopyOnWriteArraySet內部包含一個CopyOnWriteArrayList對象,它是經過CopyOnWriteArrayList實現的。併發
Map
JUC集合包中Map的實現類包括: ConcurrentHashMap和ConcurrentSkipListMap。它們的框架以下圖所示:框架
- ConcurrentHashMap是線程安全的哈希表(至關於線程安全的HashMap);它繼承於AbstractMap類,而且實現ConcurrentMap接口。ConcurrentHashMap是經過「鎖分段」來實現的,它支持併發。
- ConcurrentSkipListMap是線程安全的有序的哈希表(至關於線程安全的TreeMap); 它繼承於AbstractMap類,而且實現ConcurrentNavigableMap接口。ConcurrentSkipListMap是經過「跳錶」來實現的,它支持併發。
- ConcurrentSkipListSet是線程安全的有序的集合(至關於線程安全的TreeSet);它繼承於AbstractSet,並實現了NavigableSet接口。ConcurrentSkipListSet是經過ConcurrentSkipListMap實現的,它也支持併發。
Queue
JUC集合包中Queue的實現類包括: ArrayBlockingQueue, LinkedBlockingQueue, LinkedBlockingDeque, ConcurrentLinkedQueue和ConcurrentLinkedDeque。它們的框架以下圖所示: 高併發
- ArrayBlockingQueue是數組實現的線程安全的有界的阻塞隊列。
- LinkedBlockingQueue是單向鏈表實現的(指定大小)阻塞隊列,該隊列按 FIFO(先進先出)排序元素。
- LinkedBlockingDeque是雙向鏈表實現的(指定大小)雙向併發阻塞隊列,該阻塞隊列同時支持FIFO和FILO兩種操做方式。
- ConcurrentLinkedQueue是單向鏈表實現的無界隊列,該隊列按 FIFO(先進先出)排序元素。
- ConcurrentLinkedDeque是雙向鏈表實現的無界隊列,該隊列同時支持FIFO和FILO兩種操做方式。