Java的内置隊列
- 1.基于數組的線程安全隊列
-
ArrayBlockingQueue
基于數組實作 線程安全 通過加鎖的方式來保證線程安全
-
2基于連結清單的線程安全隊列
LinkedBlockingQueue 通過鎖的方式來實作線程安全
ConcurrentLinkedQueue compare and swap CAS
LinkedTransferQueue compare and swap CAS
Cache 之間的速度比較 如果還不了解cache 下面這個連結将的很好
推薦閱讀
https://zhuanlan.zhihu.com/p/102293437
以及CAS 計算機底層CPU是如何CAS
https://zhuanlan.zhihu.com/p/115355303
Bus Lock -> Cacheline Lock
CAS是英文單詞Compare And Swap的縮寫,翻譯過來就是比較并替換。
CAS機制當中使用了3個基本操作數:記憶體位址V,舊的預期值A,要修改的新值B。
為了減少Java的垃圾回收對系統性能的影響,會盡量選擇array/heap格式的資料結構 ArrayBlockingQueue
ArrayBlockingQueue的問題
ArrayBlockingQueue在實際使用過程中,會因為加鎖和僞共享等出現嚴重的性能問題