vlambda博客
学习文章列表

JDK源码分析初步整理

1. 啰嗦一下

不知不觉一年又到了尾声,从年初开始写 「JDK 源码分析」这个系列,而今已经过了大半年,文章也写了几十篇,虽说不多但也不算太少(好像还是有点少🤣),为便于查看,这里简单做个汇总和分类。

2. JDK 源码系列初步汇总

2.1 常用集合类

List、Map 等集合类,在平时的开发工作中使用的频率相当高,因此源码分析也是先从这里开始的,主要包括以下部分:

PS: 这里没有分析 HashSet、TreeSet 等,因为它们是基于对应 Map 实现的,所以略过。

2.2 AQS&锁

JDK 1.5 开始,并发包 java.util.concurrent 下增加了不少并发操作相关的类,这里暂且分析了其中一部分:

2.3 阻塞队列&线程池

线程池和阻塞队列也是并发中的一个核心点,一些常用类(接口)如下:

此外,还有并发容器类:

当然,这只是九牛一毛,还有很多常用的类尚未分析到,比如并发容器 ConcurrentHashMap,一些常用的类如 Object、String、StringBuilder、StringBuffer 等等。

此外,以后还计划分析一些常用的框架源码(Spring 等),以及其他相关知识(MySQL 等),敬请期待

3. 小感

以前也读过一部分源码,但没怎么整理和做笔记,有些东西理解的不够深刻,过段时间就忘了。这大半年读下来,对之前的认识和理解又加深了不少,以后还会继续下去。

这里也简单分享一点心得(纯属个人愚见,仅供参考):

  1. 耐心

    读源码一定要静下心来、耐得住性子,有些地方可能比较绕,或者比较费解,急躁不得;

  2. 从常用类开始,从接口开始

    常用类看起来比较"脸熟",而且理解了它们的原理能在开发中更高效地使用;

    从接口开始,是由于接口其实相当于类的"实现标准"。因此读了一个接口的说明和它的方法定义之后,就能了解它的实现类的主要功能,而且接口定义一般没什么代码,更容易理解其实现思想,而非直接陷入代码的细节;

  3. 查阅各种资料

    有时会遇到一些晦涩难懂的地方,也许不少人已经遇到过了,可以从网上各种论坛博客查找答案。官方文档和源码的实现说明也是非常好的资料。

还有就是「写下来」很重要。读的过程中经常自以为都懂了,但可能只是错觉,在组织语言和写作的过程中也许会发现某些地方理解地并不深刻或者有误。鄙人以为,当能够用很通俗易懂的话让别人理解,才算真懂了吧,我也尽量往这个方向努力。

PS: 由于本公号没有留言功能,因此也不清楚大家读过此前的文章有怎样的感受及评价。如果觉得多少有些收获、没有白读,可以在文末右下角点下"在看",也算是一种赞同和鼓励。

当然,由于本人水平有限,可能有些地方理解有误,也请大家不吝赐教,可以在后台私信指正,不胜感激。