1、ArrayBlockingQueue采用動態數組
takeIndex和putIndex 表示存和取的兩個數組下標。
有界 (必須指明數組大小)
不能存放null
讀和寫公用一個ReentrantLock
2、LinkedBlockingQueue采用鏈表實現
默認無界(可以在初始化時指明大小)
不能存放null
讀和寫有兩把鎖ReentrantLock takeLock和putLock
使用場景:
ArrayBlockingQueue預先分配好一段連續內存,更穩定
LinkedBlockingQueue 讀寫鎖分離,吞吐量更大