說一說java的concurrent包-系列文章

說一說javaconcurrent-系列文章

前面一個系列的文章都在圍繞hash展開,今天準備先說下concurrent包,這個系列可能會以使用場景說明爲主,concurrent包本身的代碼分析可能比較少;我在這方面的實踐經驗較爲有限,有錯誤歡迎批評指正 
不過前一個系列並未結束,還有一些文章沒有放出來,歡迎關注核桃博客 

concurrent
包是jdk1.5引入的重要的包,主要代碼由大牛Doug Lea完成,其實是在jdk1.4時代,由於java語言內置對多線程編程的支持比較基礎和有限,所以他寫了這個,因爲實在太過於優秀,所以被加入到jdk之中; 

通常所說的concurrent包基本有3package組成 
java.util.concurrent
:提供大部分關於併發的接口和類,如BlockingQueue,Callable,ConcurrentHashMap,ExecutorService, Semaphore 
java.util.concurrent.atomic
:提供所有原子操作的類,AtomicInteger, AtomicLong等; 
java.util.concurrent.locks:
提供鎖相關的類, Lock, ReentrantLock, ReadWriteLock, Condition等; 

concurrent
包的優點: 
1.
首先,功能非常豐富,諸如線程池(ThreadPoolExecutor)CountDownLatch等併發編程中需要的類已經有現成的實現,不需要自己去實現一套;畢竟jdk1.4對多線程編程的主要支持幾乎就只有Thread, Runnable,synchronized 
2. concurrent
包裏面的一些操作是基於硬件級別的CAS(compare and swap),就是在cpu級別提供了原子操作,簡單的說就可以提供無阻塞、無鎖定的算法;而現代cpu大部分都是支持這樣的算法的;

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章