常用的並發集合



並發List
	Vector和CopyOnWriteArrayList是兩個線程安全的List,Vector讀寫操作都用了同步,相對來說更適用於寫多讀少的場合,CopyOnWriteArrayList在寫的時候會復制一個副本,對副本寫,寫完用副本替換原值,讀的時候不需要同步,適用於寫少讀多的場合。

並發Set
       CopyOnWriteArraySet基於CopyOnWriteArrayList來實現的,只是在不允許存在重復的對象這個特性上遍歷處理了一下。

並發Map
       ConcurrentHashMap是專用於高並發的Map實現,內部實現進行了鎖分離,get操作是無鎖的。

並發的Queue
       在並發隊列上JDK提供了兩套實現,一個是以ConcurrentLinkedQueue為代表的高性能隊列,一個是以BlockingQueue接口為代表的阻塞隊列。ConcurrentLinkedQueue適用於高並發場景下的隊列,通過無鎖的方式實現,通常ConcurrentLinkedQueue的性能要優於BlockingQueue。BlockingQueue的典型應用場景是生產者-消費者模式中,如果生產快於消費,生產隊列裝滿時會阻塞,等待消費。

並發的Dueue
       Queue是一種雙端隊列,它允許在隊列的頭部和尾部進行出隊和入隊的操作。Dueue實現類有非線程安全的LinkedList、ArrayDueue和線程安全的LinkedBlockingDueue。LinkedBlockingDueue沒有進行讀寫鎖的分離,因此同一時間只能有一個線程對其操作,因此在高並發應用中,它的性能要遠遠低於LinkedBlockingQueue,更低於ConcurrentLinkedQueue。
 
並發鎖重入鎖ReentrantLock
       ReentrantLock是一種互斥鎖的實現,就是一次最多只能一個線程拿到鎖;

讀寫鎖ReadWriteLock
       讀寫鎖有讀取和寫入兩種鎖,讀取鎖允許多個讀取的線程同時持有,而寫入鎖只能有一個線程持有。

條件Condition       
	調用Condition對象的相關方法,可以方便的掛起和喚醒線程。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM