第0章 开篇词 | 为什么要研读 JDK 源码 |
| 专栏大纲 |
第1章 研读源码的基础 | |
| 使用 IDEA 阅读源码的正确姿势 |
| JDK 核心包结构概述(上) |
| JDK 核心包结构概述(下) |
第2章 持有对象的基本容器 | |
| 从最基本的 ArrayList 谈起 |
| “既生瑜何生亮”的 LinkedList |
| 讨论一种特殊的 K.V 存储方式 HashMap(上) |
| 讨论一种特殊的 K.V 存储方式 HashMap(下) |
| 从手写个红黑树说起 TreeMap |
| LRU 缓存的妙用之 LinkedHashMap |
| HashSet 实现不重复的的关键原因 |
| 由 TreeSet 挖掘代码复用的妙效 |
| 优先队列 PriorityQueue 实现的五大关键点 |
第3章 线程安全的容器 | |
| 论证 CopyOnWriteArrayList 如何成为线程安全的 ArrayList |
| 论证 ConcurrentHashMap 如何成为线程安全的 HashMap |
第4章 线程安全的阻塞队列 | |
| ArrayBlockingQueue 环形数组队列的思考 |
| 关于 LinkedBlockingQueue 链式队列的辩论 |
| 探究延时队列 DelayQueue 的实现原理 |
第5章 执行任务的基础 | |
| 设计 Thread 的五个关键点 |
| ThreadLocal 的六大必问考点 |
第6章 执行器 | |
| 探索异步任务 FutureTask 的实现原理 |
| ThreadPoolExecutor 从线程池参数引发的“血案”(上) |
| ThreadPoolExecutor 从线程池参数引发的“血案”(下) |
第7章显式锁 | |
| 实现一个安全的整型 AtomicInteger |
| 由 state 引发的 AbstractQueuedSynchronizer 面试连环炮(上) |
| 由 state 引发的 AbstractQueuedSynchronizer 面试连环炮(下) |
| 探究可重入锁 ReentrantLock 的实现原理 |
第8章 同步器 | |
| 信号量 Semaphore 的四个核心面试问题 |
| 倒计时,一起奔跑吧 CountDownLatch |
| CyclicBarrier 的“环保”可重复利用 |
| 不寻常的同步队列 SynchronousQueue |
第9章 面试与工作实践中的应用 | |
| 面试技巧总结 |
| 技术人的自我修养 |