我们该怎么样去看源码?
以Java为例,LZ当时看Java源码是从Concurrent包开始的。Concurrent包里有各式各样的线程互斥与同步机制,看了Concurrent包,才会发现在多线程中,不是只有简陋的互斥锁、通知机制和线程池。LZ最开始也是一头雾水,但搞清其组成,确定其核心类有哪些,看源码过程中再配合画一些时序图,加以debug源码验证,这一套流程下来,没有啥源码搞不定的。当然我在这里只能简单说,因为源码不能速成,是你摸索到适合你自己的方法后靠平时的积累跟坚持,下面LZ也是大致总结了几个核心点,希望能对诸位有一些启发。
学习源码的方法论:
看到这,你脑海中有一个阅读源码的大概思路了吗?如果还是没有,LZ就借此机会把一份前段时间架构师社区爆火的一份JDK 源码剖析分享给大家
阿里JDK源码核心剖析
多线程基础
Atomic类
1个Long型变量被拆成多个Long型
Lock与Condition
“乐观读”实现原理
同步工具类
并发容器
公平模式与非公平模式对比
线程池与Future
基于线程池的实现原理,解析ThreadPoolExector核心配置参数
Executors工具类创建各种不同类型的线程池
ForkJoinPool
join的层层嵌套
CompletableFuture
最后
需要资料的小伙伴,点这里