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