第一章 Java常用的並發類


注:本系列博客主要參考於《分布式Java應用:基礎與實踐》,林昊 著

1、常用的並發集合類

  • ConcurrentHashMap:線程安全的HashMap的實現
  • CopyOnWriteArrayList:線程安全且在讀操作時無鎖的ArrayList
  • CopyOnWriteArraySet:基於CopyOnWriteArrayList,不添加重復元素
  • ArrayBlockingQueue:基於數組、先進先出、線程安全,可實現指定時間的阻塞讀寫,並且容量可以限制
  • LinkedBlockingQueue:基於鏈表實現,讀寫各用一把鎖,在高並發讀寫操作都多的情況下,性能優於ArrayBlockingQueue

2、原子類

  • AtomicInteger:線程安全的Integer,基於CAS(無阻塞,CPU原語),優於使用同步鎖的Integer

3、線程池

  • ThreadPoolExecutor:一個高效的支持並發的線程池,可以很容易的講一個實現了Runnable接口的任務放入線程池執行,但要用好這個線程池,必須合理配置corePoolSize、最大線程數、任務緩沖隊列,以及隊列滿了+線程池滿時的回絕策略,一般而言對於這些參數的配置,需考慮兩類需求:高性能和緩沖執行
  • Executor:提供了一些方便的創建ThreadPoolExecutor的方法。
  • FutureTask:可用於異步獲取執行結果或取消執行任務的場景,基於CAS,避免鎖的使用

4、鎖

  • ReentrantLock:與synchronized效果一致,但是又更加靈活,支持公平/非公平鎖、支持可中斷的鎖、支持非阻塞的tryLock(可超時)、支持鎖條件等,需要手工釋放鎖,基於AbstractQueueSynchronizer
  • ReentrantReadWriteLock:與ReentrantLock沒有關系,采用兩把鎖,用於讀多寫少的情形

 

注:在本系列的博客中,對以上的類會着重從以下幾個方面去記錄:

  • 用法
  • 源碼解讀
  • 使用場景
  • 一些必要的比較


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM