如何读源码

如何读源码

前言

读源码很难,难的是在于理解别人的思路,读自己的源码以及和自己思路类似的人的源码很容易。读源码需要具备数据结构基础和掌握设计模式。这样读起来才不会费劲。假如你想去读PriorityQueue的源码,但你连PriorityQueue是什么都不知道,何必这么折磨自己呢。正所谓万丈高楼平地起,数据结构和设计模式是必备掌握的基础内容。

源码阅读原则

对于如何阅读源码,首先代码跑不起来的不读,因为只有代码跑起来,点进去的源码和原来点进去是不一样的,原来点进去的可能是父类,可能是抛出了一个异常方法,但跑起来后的源码是实现了父类的子类源码。其次,如果在开发过程中遇到实在读不懂的源码,不要去尝试一遍又一遍去读,没有任何意义,费时又费劲。对于工作而言,解决了问题就好,这是我们的目的。

但即使这样,读源码还是会很费事费劲,这是很正常的。但是只要你开始读了,你就会越读越顺,越读水平越高,越读你就从小河边长到了天宫。就如口红的各种色号你开始熟悉了。

接下来就是读源码的时候建议尝试去画图,画图可以很好的帮助你分析源码,最好是uml图。当然不一定非得是UML,只要自己能画清楚,能看懂,能理解那就是好的。画了这个图你才能更好的理解这个流程是怎样的。

读源码的时候无关细节要忽略,切忌从头到尾读下去,所有源码全读一遍,这样读起来是非常费劲的,实在没有必要,也不是好的方法。

前面说过在阅读源码的时候画图,画两种图就行,第一种是方法之间的调用图,第二种就是类图。

最后,读源码最重要的就是要去读,画图只是让我们分析的更为透彻,助于理解。

AQS的底层是CAS+volatile,下面是AQS原理之一,这里只取了核心方法出来。

ReentrantLock r = new ReentrantLock();
 public ReentrantLock() {
        sync = new NonfairSync();
    }
static final class NonfairSync extends Sync {
           nonfairTryAcquire(acquires);
    }
    final boolean nonfairTryAcquire(int acquires) {
                setState(nextc);
        }
private volatile int state;

protected final void setState(int newState) {
        state = newState;
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

༄༊心灵骇客༣

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值