最近在重温java源码,一边看一边总结下,并且分享下自己的心得,共同学习,欢迎指点。这一篇说下concurrent并发包的结构,致敬Doug Lea !
学习concurrent包要有一定的线程安全概念,并且充分了解线程安全在程序运行时的重要性。否则,会学习的比较迷茫,不会有很大的收获。
推荐先看下【java线程安全】你的程序线程安全吗? 这一篇文章,再看并发系列的源码。
包结构
如上图所示,concurrent包一共有3个包,先说下两个子包aomic和locks
顾名思义,atomic包里面包含了一些原子性的基础数据类型,平时应用过程中也基本有用过
locks包里面是Doug Lea写的一些实用的锁,如读写锁。
concurrent主包里面包含了一些并发工具类,线程池,和一些高级的数据结构。
下面这张图展示了j.u.c包的类得结构: