说一说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大部分都是支持这样的算法的;

 

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