前言
第一部分主要阐述Thread的基础知识,详细介绍线程的API使用、线程安全、线程间数据通信以及如何保护共享资源等内容,它是深入学习多线程内容的基础。
在第二部分中之所以引人 ClassLoader,是因为 ClassLoader 与线程不无关系,我们可以通过 synchronized 关键字,或者Lock 等显式锁的方式在代码的编写阶段对共享资源进行数据一致性保护,那么一个 Class在完成初始化的整个过程到最后在方法区(JDK8以后在元数据空间)其数据结构是怎样确保数据一致性的呢?这就需要对ClassLoader 有一个比较全面的认识和了解。
在本书的第三部分中,作者用了三章的篇幅来详细、深入地介绍 volatile 关键字的语义,volatile 关键字在 Java中非常重要,可以说它奠定了 Java核心并发包的高效运行,在这一部分中,通过实例展示了如何使用 volatile 关键字并非常详细地介绍了 Java 内存模型等知识。
最后一部分也就是第四部分,站在程序架构设计的角度讲解如何设计高效灵活的多线程应用程序,第四部分应该是内容最多的一部分
一、下载地址
- 下载地址:Java高并发编程详解下载
- 其他书籍:200本后端必备电子书下载

二、目录大纲
| 第1章 快速认识线程 |
|---|
| 1.1 线程的介绍 |
| 1.2 快速创建并启动一个线程 |
| 1.3 线程的生命周期详解 |
| 1.4 线程的start方法剖析:模板设计模式在Thread中的应用 |
| 1.5 Runnable接囗的引入以及策略模式在Thread中的使用 |
| 1.6 本章总结 |
| 第2章 深入理解Thread构造函数 |
|---|
| 2.1 线程的命名 |
| 2.2 线程的父子关系 |
| 2.3 Thread与ThreadGroup |
| 2.4 Thread与Runnable |
| 2.5 Thread与JVM虚拟机栈 |
| 2.6 守护线程 |
| 2.7 本章总结 |
| 第3章 Thread APl的详细介绍 |
|---|
| 3.1 线程sleep |
| 3.2 线程yield |
| 3.3 设置线程的优先级 |
| 3.4 获取线程ID |
| 3.5 获取当前线程 |
| 3.6 设置线程上下文类加载器 |
| 3.7 线程interrupt |
| 3.8 线程join |
| 3.9 如何关闭一个线程 |
| 3.10 本章总结 |
| 第4章 线程安全与数据同步 |
|---|
| 4.1 数据同步 |
| 4.2 初识 synchronized关键字 |
| 4.3 深入synchronized关键字 |
| 4.4 This Monitor和Class Monitor的详细介绍 |
| 4.5 程序死锁的原因以及如何诊断 |
| 4.6 本章总结 |
| 第5章 线程间通信 |
|---|
| 5.1 同步阳塞与异步非阻塞 |
| 5.2 单线程间通信 |
| 5.3 多线程间通信 |
| 5.4 自定义显式锁BooleanLock |
| 5.5 本章总结 |
| 第6章 ThreadGroup详细讲解 |
|---|
| 6.1 ThreadGroup与Thread |
| 6.2 创建ThreadGroup |
| 6.3 复制Thread数组和ThreadGroup数组 |
| 6.4 ThreadGroup操作 |
| 6.5 本章总结 |
| 第7章 Hook线程以及捕获线程执行异常 |
|---|
| 7.1获取线程运行时异常 |
| 7.2 注入钩子线程 |
| 7.3 本章总结 |
| 第8章 线程池原理以及自定义线程池 |
|---|
| 8.1 线程池原理 |
| 8.2 线程池实现 |
| 8.3 线程池的应用 |
| 8.4 本章总结 |
| 第9章 类的加载过程 |
|---|
| 9.1 类的加载过程简介 |
| 9.2 类的主动使用和被动使用 |
| 9.3 类的加载过程详解 |
| 9.4 本章总结 |
| 第10章 IM类加载器 |
|---|
| 10.1 JVM内置大类加载器 |
| 10.2 自定义类加载器 |
| 10.3 本章总结 |
| 第11章 线程上下文类加载器 |
|---|
| 11.1 为什么需要线程上下文类加载器 |
| 11.2 数据库驱动的初始化源码分析 |
| 11.3 本章总结 |
| 第12章 volatile关键字的介绍 |
|---|
| 12.1 初识volatile头键字 |
| 12.2 机器硬件CPU |
| 12.3 Java内存模型 |
| 12.4 本章总结 |
| 第13章 深入volatile关键字 |
|---|
| 13.1 并发编程的三个重要特性 |
| 13.2 JMM如何保证三大特性 |
| 13.3 volatile头键字深入解析 |
| 13.4 本章总结 |
| 第14章 7种单例设计模式的设计 |
|---|
| 14.1 饿汉式 |
| 14.2 懒汉式 |
| 14.3 懒汉式+同步方法 |
| 14.4 Double-Check |
| 14.5 Volatile+Double-Check |
| 14.6 Holder万式 |
| 14.7 枚举方式 |
| 14.8 本章总结 |
| 第15章 监控任务的生命周期 |
|---|
| 15.1 场景描述 |
| 15.2 当观察者模式遇到Thread |
| 15.3 本章总结 |
| 第16章 Single Thread Execution设计模式 |
|---|
| 16.1 机场过安检 |
| 16.2 吃面问题 |
| 16.3 本章总结 |
| 第17章 读写锁分离设计模式 |
|---|
| 17.1 场景描述 |
| 17.2 读写分离程序设计 |
| 17.3 读写锁的使用 |
| 17.4 本章总结 |
| 第18章 不可变对象设计模式 |
|---|
| 18.1 线程安全性 |
| 18.2 不可变对象的设计 |
| 18.3 本章总结 |
| 第19章 future设计模式 |
|---|
| 19.1 先给你一张凭据 |
| 19.2 Future设计模式实现 |
| 19.3 Future的使用以及技巧总结 |
| 19.4 增强FutureService使其支持回调 |
| 19.5 本章总结 |
| 第20章 Guarded Suspension设计模式 |
|---|
| 20.1 什么是Guarded Suspension设计模式 |
| 20.2 Guarded Suspension的示例 |
| 20.3 本章总结 |
| 第21章 线程上下文设计模式 |
|---|
| 21.1 什么是上下文 |
| 21.2 线程上下文设计 |
| 21.3 ThreadLocal详解 |
| 21.4 使用ThreadLocal设计线程上下文 |
| 21.5 本章总结 |
| 第22章 Balking设计模式 |
|---|
| 22.1 什么是Balking设计 |
| 22.2 Balking模式之文档编辑 |
| 22.3 本章总结 |
| 第23章 Latch设计模式 |
|---|
| 23.1 什么是Latch |
| 23.2 CountDownLatch程序实现 |
| 23.3 本章总结 |
| 第24章 Thread-Per-Message设计模式 |
|---|
| 24.1 什么是Thread-Per-Message模式 |
| 24.2 每个任务一个线程 |
| 24.3 多用户的网络聊天 |
| 24.4 本章总结 |
| 第25章 Two Phase Termination设计模式 |
|---|
| 25.1 什么是Two Phase Termination模式 |
| 25.2 Two Phase Termination的示例 |
| 25.3 知识扩展 |
| 25.4 本章总结 |
| 第26章 Worker-Thread设计模式 |
|---|
| 26.1 什么是Worker-Thread模式 |
| 26.2 Worker-Thread模式实现 |
| 26.3 本章总结 |
| 第27章 Active Objects设计模式 |
|---|
| 27.1 接受异步消息的主动对象 |
| 27.2 标准Active Objects模式设计 |
| 27.3 通用Active Objects框架设计 |
| 27.4 本章总结 |
| 第28章 Event Bus设计模式 |
|---|
| 28.1 Event Bus设计 |
| 28.2 Event Bus实战–监控目录变化 |
| 28.3 本章总结 |
| 第29章 Event Driven设计模式 |
|---|
| 29.1 Event-Driven Architecture基础 |
| 29.2开发-个Event-Driven框架 |
| 29.3 Event-Driven的使用 |
| 29.4 本章总结 |
三、部分电子书效果展示
