concurrent包分析之前言
文章目录
现在这个工作年限了,不会一点concurrent包中的东西都不好意思出去面试了,这也算是刺激学习concurrent包最大原因了。其实从java的发展历史来看,和collection包一样,concurrent包同样对JDK都产生了里程碑式的影响,Doug Lea设计的concurrent虽然没有像Josh Bloch那样获得Jolt大奖,但也算是业界神级一样的人物了,很多并发思想也值得借鉴。 也许在工作中用到并发的代码不多,但是也是非常重要的包,对研究其他的开源框架如tomcat、netty、zookeeper等也有帮助。
与早期控制线程并发的wait(), notify(), and synchronized相比,concurrent包中的类实现更接近硬件、执行效率更高、 控制并发更简单,后面会逐步深入分析。concurrent包中的类大概只有70、80个类,参考Brian Goetz在JavaOne介绍concurrent的一个图:
主要的类大概就这几十个,其实DougLea最初设计的时候总结起来就三大块:执行器框架、并发集合与同步器
而整个concurrent包都是基于原子性的,那整个包的结构就变得比较清楚了,后期就针对这几块或者个别类进行深入分析。
参考资料:
- Doug Lea的《Concurrent Programming in Java, Second Edition》,多线程设计原理以及concurrent包的一些设计思路
- 并发专家Brian Goetz等著作的《JAVA并发编程实践》,地球人都知道
- 《面向模式的软件体系结构(卷2)》,并发相关的模式,concurrent包里面一些思想借鉴于此