原创 源碼閱讀(31):Java中線程安全的Queue、Deque結構——ArrayBlockingQueue(1)

1、概述 ArrayBlockingQueue是一種經常使用的線程安全的Queue結構,上文也已經提過,它是一種內部基於數組的,使用在高併發場景下的阻塞隊列,也是一種容量有界的隊列。該隊列符合先進先出(FIFO)的工作原則,也就是

原创 源碼閱讀(16):Java中主要的Map結構——HashMap容器(上)

(接上文《源碼閱讀(15):Java中主要的Map結構——概述》) 2.4、java.util.AbstractMap抽象類 AbstractMap抽象類是實現了Map接口的一個抽象類,用來向下層具體的Map容器實現提供了一些默認

原创 源碼閱讀(23):Java中其它主要的Map結構——LinkedHashMap容器(上)

1、概述 LinkedHashMap容器是Java容器框架中從很早的版本就開始提供的(JDK 1.4+),該容器又被這樣認爲:“LinkedHashMap = HashMap + LinkedList”。LinkedHashMap

原创 源碼閱讀(30):Java中線程安全的Queue、Deque結構——概述(1)

1、概述 如果要將java.util.concurrent工具包中的各種工具類進行詳細的功能分類,那麼在這個工具包中可以將“隊列”性質的工具類專門作爲一個獨立的功能分類。爲了適應高併發的程序工作場景,java.util.concu

原创 源碼閱讀(22):Java中其它主要的Map結構——TreeMap容器(2)

(接上文《源碼閱讀(21):Java中其它主要的Map結構——TreeMap容器(1)》) (注:筆者翻閱了一下網絡上的相關資料,基本上沒有發現把TreeMap容器的刪除操作講清楚的文章) 2.3、TreeMap添加操作 Tree

原创 源碼閱讀(15):Java中主要的Map結構——概述

(接上文《源碼閱讀(14):Java中主要的Queue、Deque結構——PriorityQueue集合(下)》) 1、概述 1.1、Map結構和Set集合的關係 爲什麼要先介紹Java中的主要Map結構呢?如果讀者是從本專題第一

原创 源碼閱讀(40):Java中線程安全的Queue、Deque結構——LinkedTransferQueue(3)

(接上文《源碼閱讀(39):Java中線程安全的Queue、Deque結構——LinkedTransferQueue(2)》) 2.4.1、生產者端對xfer方法的調用 請注意我們討論的情況是同時有多個生產者線程,在進行Linke

原创 源碼閱讀(26):Java中主要的Set結構——HashSet

1、概述 在全面理解了HashMap結構後,理解HashSet數據結構也就足夠簡單了——HashSet內部就是對HashMap數據結構的依賴。HashMap結構的Key就是HashSet存儲的數據,HashMap結構的Value則

原创 源碼閱讀(20):Java中主要的Map結構——HashMap容器(下2)

(接上文《源碼閱讀(19):Java中主要的Map結構——HashMap容器(下1)》) 3.4.6、HashMap擴容操作 3.4.6.1、HashMap擴容操作場景 在上文講解HashMap容器中的添加操作時,我們就知道在如下

原创 源碼閱讀(39):Java中線程安全的Queue、Deque結構——LinkedTransferQueue(2)

接上文《源碼閱讀(38):Java中線程安全的Queue、Deque結構——LinkedTransferQueue(1)》 2.3、LinkedTransferQueue的主要屬性和構造函數 LinkedTransferQueue

原创 源碼閱讀(28):Java中線程安全的List結構——CopyOnWriteArrayList(1)

1、概述 從本文開始我們將介紹多線程(高併發)場景下的多種數據結構,這些數據結構基本來源於java.util.concurrent工具包。通過後續多篇文章的講解我們將會發現,高併發場景下的數據結構,其關注的最優先問題往往不是數據結

原创 源碼閱讀(29):Java中線程安全的List結構——CopyOnWriteArrayList(2)

(接上文《源碼閱讀(28):Java中線程安全的List結構——CopyOnWriteArrayList(1)》) 4、CopyOnWriteArrayList的主要方法 當完成CopyOnWriteArrayList集合的初始化

原创 源碼閱讀(38):Java中線程安全的Queue、Deque結構——LinkedTransferQueue(1)

1、LinkedTransferQueue概述 LinkedTransferQueue是從JDK 1.7+版本開始提供的一個無界阻塞式隊列,它是Java容器框架中一種比較特殊的阻塞式隊列,特殊性體現在它實現的TransferQue

原创 源碼閱讀(37):Java中線程安全的Queue、Deque結構——PriorityBlockingQueue

1、概述 PriorityBlockingQueue是一種無界阻塞隊列,其內部核心結構和我們前文中已經介紹過的PriorityQueue隊列集合類似,都是基於小頂堆樹進行工作。本文不會贅述介紹PriorityQueue時已經詳解過

原创 源碼閱讀(35):Java中線程安全的Queue、Deque結構——LinkedBlockingQueue(1)

1、概述 之前花了大量的篇幅介紹了一個Java中線程安全的Queue結構:ArrayBlockingQueue。主要是爲了歸納分類這些線程安全性的Queue、Deque結構的設計共性。實際上ArrayBlockingQueue已經