1.ConcurrentHashMap。
key,value結構。 jdk1.7通過分段鎖保證不同段同時操作是線程安全的,但并發不足,jdk1.8通過node節點鎖和CAS保證并發安全。不同node節點可以并發讀寫。通過它的computer,computerIfAbsent,等可以保證原子更新value。ifAbsent表示有當前key才會更新,沒有則不會寫入。
2.CopyOnWriterArrayList。
數組結構,讀時無鎖,寫時通過復制原數組,在新數組上寫數據,寫結束后替換原數組。線程安全,適合讀多寫少的場景,如維護監聽器列表可避免遍歷時加鎖。
3.BlockingQueue接口實現類。
包括ArrayBlockingQueue,LinkedBlockingQueue,線程安全,通過put方法寫入,隊列滿時,阻塞。通過take方法獲取元素,隊列為空時阻塞。適用于生產者-消費者模型
?4.ConcurrentLinkedQueue
?非阻塞線程安全隊列,基于CAS實現。
適用場景:高并發環境下的任務隊列。通過offer添加,poll取出
5.Collections.synchronizedXXX()(傳統方式)
通過工具類包裝非線程安全集合
缺點:使用全局鎖,性能較差。