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