最近利用了两个星期的空闲时间,写了几篇关于Java并发模块的内容。写的原因如下:
-
感觉写博客应该能锻炼人的条理,提升记忆力,今年尤其感觉记忆力下降得厉害,所以就是硬逼着自己写了几篇。
-
因为本人就是干大数据的,有时候避免不了需要去分析大数据的源码,去优化,修改大数据的源码,感觉到如果有同学的java并发的知识不过关的话,有可能连阅读源码的任务也完成不了,更不用谈去优化,修改源码了。所以想写几篇博客多少能帮到需要的同学。当然我写的时候也没刻意去设计,更多的是就是把jdk的源码给注释了一下,注释信息倒是写得挺详细的。
-
建议,引导大家可以去看看java并发包的源码,因为java并发包的源码是世界java水平一流的大师写的,代码设计得超级漂亮,大家可以从里面学到很多优秀的设计思想。
整个java.util.concurrent包,按照功能可以大致划分如下:
juc-atomic 原子类框架juc-locks 锁框架juc-sync 同步器框架juc-collections 集合框架juc-executors 执行器框架
学习并发的知识,个人认为第一步应该要搞清楚java并发的三大特性。所以我就写了一篇》, 比较深入的讲解了关于并发特性的知识,如果能掌握这篇里面的知识,那肯定对java的并发的特性掌握得很扎实了。
在有了java并发的认识以后。那么我认为先熟悉juc-atomic类。但是juc-atomic类源码都是很类似的,所以我挑了其中的一个类对其源码写了注释。看懂这篇以后再去分析其余的juc-atomic类就简单多了。
学习了Atomic类型的类以后,接下来要学习的是juc-locks锁框架。这个里面有一个非常重要的对象就是AQS,AQS是一个抽象类。ReentantLock,ReentantReadWriteLock锁都是基于这个实现的。所以我挑了ReentantLock类对其源码进行了注释,深入理解了AQS以后,再去看ReentantReadWriteLock的源码就简单多了。并发包里面的juc-sync 同步器框架里面的工具类CountDownLatch,CyclicBarrier等也是基于AQS是实现的,所以同学们一定掌握好AQS的原理。
有了上面的知识,我们就可以去看juc-collections 集合框架的源码了。我并没有把所有的类都剖析了一遍,而是选了两个重要的类对源码进行了注释。因为这两个类是平时使用频率比较高,而且设计思想也很好。非常值得我们去学习。,。
学完了前面所有的知识,我们就再学习对前面所有知识综合运用的一个模块juc-executors 执行器框架。里面讲了多个线程池,我挑了其中一个比较重要的线程池,对其源码进行了注释。,看懂这个线程池的源码以后再去分析其他的线程池就比较简单了。
祝阅读这篇文章的同学学业有成
希望能帮助到部分同学。