經常使用的併發集合

併發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對象的相關方法,能夠方便的掛起和喚醒線程。
相關文章
相關標籤/搜索