通常我們所說的並發包也就是java.util.concurrent,集中了Java並發的各種工具類。
同步結構:
CountDownLatch 允許一個或多個線程等待某些操作完成 CountDownLatch操作的是事件
CyclicBarrier 一種輔助性的同步結構,允許多個線程等待到大某個屏障 CyclicBarrier側重點是線程
Semaphore Java版本的信號量實現
Phaser 功能與CountDownLatch很接近,允許線程動態的注冊到Phaser上面,而CountDownLatch是不能動態設置的。
設計初衷是實現多個線程類似步驟、階段場景的協調,線程注冊等待屏障條件出發,進而協調彼此間的行動,具體參考這個例子。
線程安全的容器:
ConcurrentHashMap、側重於Map放入或者獲取的速度,而不在乎順序
ConcurrentSkipListMap、在乎順序,需要對數據進行非常頻繁的修改
CopyOnWriteArrayList 任何修改操作,如add、set、remove,都會拷貝原數組,修改后替換原來的數組,通過這種防御性的方式,實現另類的線程安全。
CopyOnWriteArraySet
各種並發隊列的實現:如各種BlockedQueue實現,比較典型的ArrayBlockingQueue、SynchorousQueue或針對特定場景的PriorityBlockingQueue等。
強大的Executor框架:可以創建各種不同類型的線程池,調度任務運行等,絕大部分情況下,不再需要自己從頭實現線程池和任務調度器。
並發包里提供的線程安全Map、List和Set。參考下面類圖
ConcurrentHashMap
ConcurrentSkipListMap
兩個CopyOnWrite容器CopyOnWriteArrayList和CopyOnWriteArraySet