我將JUC包中的集合類劃分爲3部分來進行說明。在簡單的瞭解JUC包中集合類的框架之後,後面的章節再逐步對各個類進行介紹。
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兩種操作方式。