最近看了一些关于java.util.concurrent(J.U.C)的博客,还是觉得有必要写出来,这样对于自己的理解会更加深入一些。
下面是对juc包的整体认识图,参考大牛的博客:http://www.blogjava.net/xylz/archive/2010/06/30/324915.html
可以发现JUC中分成几个部分:
1、atomic 是原子操作,利用CAS操作完成
2、locks 是锁相关的操作
3、tools 是并发工具
4、collections是并发集合工具类
5、executor 线程池相关的操作
5个部分互相是有关联的,下面是一个关联图 参考博客:http://www.infoq.com/cn/articles/java-memory-model-5?utm_source=infoq&utm_medium=related_content_link&utm_campaign=relatedContent_articles_clk
对于并发包中,最底层是利用volatile变量的内存语义和CAS操作,中间层是AQS和原子变量类和非阻塞数据结构,最上层就是我们常用的锁、同步工具、并发容器、以及线程池等,这里只做简单说明,后面会慢慢做分析。