簡介
JDK 1.5 由大神 Doug Lea 推出併發包 java.util.concurrent 來簡化併發處理。
接口
- Executor
- ExecutorService
- ScheduledExecutorService
- Future
- ThreadFactory
- BlockingQueue:阻塞隊列
ConcurrentHashMap
- 多線程環境下,HashMap 進行put操作會引起死循環
- HashTable 容器使用synchronized來保證線程安全,但在線程競爭激烈的情況下HashTable的效率非常低下。因爲當一個線程訪問HashTable的同步方法,其他線程也訪問HashTable的同步方法時,會進入阻塞或輪詢狀態。
- ConcurrentHashMap 分段鎖技術可有效提升併發訪問率
ConcurrentLinkedQueue
阻塞隊列
阻塞隊列常用於生產者和消費者的場景,生產者是向隊列裏添加元素的線程,消費者是從隊列裏取元素的線程。
阻塞隊列
- ArrayBlockingQueue:基於數組實現的有界阻塞隊列。
- LinkedBlockingQueue:基於鏈表實現的有界阻塞隊列。
- PriorityBlockingQueue
- DelayQueue
- SynchronousQueue
- LinkedTransferQueue:基於鏈表組成的無界阻塞隊列。
- LinkedBlockingDeque