作为一名java的开发者,需要对JDK源码有一定的了解和学习,同时也是个人能力的体现,也是在面试中给自己的加分项目。因此个人总结学习JDK源码的相关知识的方法和JDK源码服务图。JDK 中的代码非常多,作为是初学者需要阅读一下基本的源码,参考互联网上各种意见,个人认为阅读JDK源码需要具备一下几点:
熟悉了解JDK的使用
熟悉openJDK的编译
了解常见软件设计模式
为什么要看JDK源码
一,JDK源码是其它所有源码的基础,看懂了JDK源码再看其它的源码会达到事半功倍的效果。
二,JDK源码中包含大量的数据结构知识,是学习数据结构很好的资料,比如,链表、队列、散列表、红黑树、跳表、桶、堆、双端队列等。
三、JDK源码中包含大量的设计模式,是学习设计模式很好的资料,比如,适配器模式、模板方法模式、装饰器模式、迭代器模式、代理模式、工厂模式、命令模式、状态模式等。
三,JDK源码中包含大量Java的高阶知识,比如弱引用、Unsafe、CAS、锁原理、伪共享等,不看源码是很难学会这些知识的。
四,面试时更好地收割offer,这可能是很多同学最初的想法,其实真正看多了源码,这一点可能并不是太重要了,因为你会发现更广阔的世界。
五,作者认为最重要的,阅读源码是对思维的一种锻炼,是学习优秀设计的最佳途径。
所以这玩意儿肯定是一个长期的过程,但是我们一定要有足够的信心,我坚信“JDK源码笔记”人家都写出来了,我就不信我看不懂!接下来我们就一看究竟!
主要内容
第一章多线程基础
-
锁的本质是什么
第二章Atomic类
-
AtomicBoolean和AtomicReference
-
Striped64与LongAdder
第三章Lock与Condition
-
互斥锁
-
读写锁
第4章同步工具类
-
CountDownLatch
-
Exchanger
-
Phaser
第5章并发容器
在Lock和Phaser的实现中,已经介绍了基于CAS实现的无锁队列和无锁栈。本章将全面介绍Concurrent包提供的各种并发容器。
-
BlockingQueue
-
ConcurrentHashMap
-
ConcurrentSkipListMap/Set
第6章线程池与Future
-
线程池与Future
-
线程池的类继承体系
-
ScheduledThreadPoolExecutor
第7章ForkJoinPool
-
工作窃取队列
-
ForkJoinTask的fork/join
-
ForkJoinPool的优雅关闭
CompletableFuture
-
CompletableFuture用法
-
任务的网状执行:有向无环图