• 暂时停更一段时间!
  • 近期网站将陆续进行前端页面改造!
  • 招募网站编辑,联系站长!

Java 高并发编程详解:多线程与架构设计高清扫描PDF下载

文章目录[隐藏]

简介

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

第一部分:多线程基础 20
第 1 章:快速认识线程 22
1.1 线程的介绍 22
1.2 快速创建并启动一个线程 22
1.2.1 尝试并行运行 23
1.2.2 并发运行交替输出 24
1.2.3 使用 Jconsole 观察线程 25
1.3 线程的生命周期详解 26
1.3.1 线程的 NEW 状态 27
1.3.2 线程的 RUNNABLE 状态 28
1.3.3 线程的 RUNNING 状态 28
1.3.4 线程的 BLOCKED 状态 29
1.3.5 线程的 TERMINATED 状态 29
1.4 线程的 start 方法剖析–模板设计模式在 Thread 中的应用 30
1.4.1 Thread start 方法源码分析以及注意事项 30
1.4.2 模板设计模式在 Thread 中的应用 33
1.4.3 Thread 模拟营业大厅叫号机程序 34
1.5 Runnable 接口的引入以及策略模式在 Thread 中的使用 39
1.5.1 Runnable 的职责 39
1.5.2 策略模式在 Thread 中的应用 40
1.5.3 模拟营业大厅叫号机程序 42
1.6 本章总结 43
第 2 章:深入理解 Thread 构造函数 45
2.1 线程的命名 45
2.1.1 线程的默认命名 45
2.1.2 命名线程 46
2.1.3 修改线程的名字 47
2.2 线程的父子关系 48
2.3 Thread 与 ThreadGroup 48
2.4 Thread 与 Runnable 50
2.5 Thread 与 JVM 虚拟机栈 50
2.5.1 Thread 与 Stacksize 51
2.5.2 JVM 内存结构 53
2.5.3 Thread 与虚拟机栈 58
2.6 守护线程 62
2.6.1 什么是守护线程 62
2.6.2 守护线程的作用 64
2.7 本章总结 64
第 3 章:Thread API 的详细介绍 66
3.1 线程 sleep 66
3.1.1 sleep 方法介绍 66
3.1.2 使用 TimeUnit 替代 Thread.sleep 67
3.2 线程 yield 68
3.2.1 yield 方法介绍 68
3.2.2 yield vs sleep 69
3.3 设置线程的优先级 69
3.3.1 线程优先级介绍 70
3.3.2 线程优先级源码分析 71
3.3.3 关于优先级的一些总结 72
3.4 获取线程 ID 73
3.5 获取当前线程 73
3.6 设置线程上下文类加载器 74
3.7 线程 interrupt 75
3.7.1 interrupt 75
3.7.2 isInterrupted 77
3.7.3 interrupted 79
3.7.4 interrupt 注意事项 81
3.8 线程 join 82
3.8.1 线程 join 方法详解 83
3.8.2 join 方法结合实战 85
3.9 如何关闭一个线程 90
3.9.1 正常关闭 90
3.9.2 异常退出 94
3.9.3 进程假死 94
3.10 本章总结 95
第 4 章:线程安全与数据同步 97
4.1 数据同步 97
4.1.1 数据不一致问题的引入 97
4.1.2 数据不一致问题原因分析 99
4.2 初识 synchronized 关键字 101
4.2.1 什么是 synchronized 102
4.2.2 synchronized 关键字的用法 103
4.3 深入 synchronized 关键字 105
4.3.1 线程堆栈分析 105
4.3.2 JVM 指令分析 108
4.3.3 使用 synchronized 需要注意的问题 112
4.4 This Monitor 和 Class Monitor 的详细介绍 114
4.4.1 this monitor 114
4.4.2 class monitor 117
4.5 程序死锁的原因以及如何诊断 120
4.5.1 程序死锁 120
4.5.2 程序死锁举例 121
4.5.3 死锁诊断 124
4.6 本章总结 126
第 5 章:线程间通信 127
5.1 同步阻塞与异步非阻塞 127
5.1.1 同步阻塞消息处理 127
5.1.2 异步非阻塞消息处理 128
5.2 单线程间通信 129
5.2.1 初识 wait 和 notify 129
5.2.2 wait 和 notify 方法详解 133
5.2.3 wait 和 notify 注意事项 135
5.2.4 wait vs sleep 137
5.3 多线程间通信 137
5.3.1 生产者消费者 137
5.3.2 线程休息室 wait set 140
5.4 自定义显式锁 BooleanLock 141
5.4.1 synchronized 关键字的缺陷 142
5.4.2 显式锁 BooleanLock 143
5.5 本章总结 153
第 6 章:ThreadGroup 详细讲解 155
6.1 ThreadGroup 与 Thread 155
6.2 创建 Thread Group 155
6.3 拷贝 Thread 数组和 ThreadGroup 数组 157
6.3.1 拷贝 Thread 数组 157
6.3.2 拷贝 ThreadGroup 数组 159
6.4 ThreadGroup 操作 160
6.4.1 ThreadGroup 的基本操作 161
6.4.2 ThreadGroup 的 interrupt 164
6.4.3 ThreadGroup 的 destroy 166
6.4.4 守护 ThreadGroup 168
6.5 本章总结 169
第 7 章:Hook 线程以及捕获线程执行异常 170
7.1 获取线程运行时异常 170
7.1.1 UncaughtExceptionHandler 介绍 170
7.1.2 UncaughtExceptionHandler 实例 171
7.1.3 UncaughtExceptionHandler 源码分析 173
7.2 注入钩子线程(Hook) 175
7.2.1 Hook 线程介绍 175
7.2.2 Hook 线程实战 177
7.2.3 Hook 线程应用场景以及注意事项 179
7.3 本章总结 179
第 8 章:线程池原理以及自定义线程池 180
8.1 线程池原理 180
8.2 线程池实现 181
8.2.1 线程池接口定义 182
8.2.2 线程池详细实现 188
8.3 线程池应用 198
8.4 本章总结 202
第二部分:Java ClassLoader 204
第 9 章 类的加载过程 205
9.1 类的加载过程介绍 205
9.2 类的主动使用和被动使用 206
9.3 类加载过程详解 209
9.3.1 类的加载阶段 210
9.3.2 类的连接阶段 212
9.3.3 类的初始化阶段 219
9.4 本章总结 221
第 10 章 JVM 类加载器 224
10.1 JVM 内置三大类加载器 224
10.1.1 根类加载器介绍 225
10.1.2 扩展类加载器介绍 226
10.1.3 系统类加载器介绍 227
10.2 自定义类加载器 227
10.2.1 自定义类加载器,问候世界 228
10.2.2 双亲委托机制详细介绍 233
10.2.3 破坏双亲委托机制 236
10.2.4 类加载器命名空间,运行时包,类的卸载等 239
10.3 本章总结 246
第 11 章 线程上下文类加载器 249
11.1 为什么需要线程上下文类加载器 249
11.2 数据库驱动的初始化源码分析 250
第三部分 深入理解 volatile 关键字 254
第 12 章 volatile 关键字的介绍 255
12.1 初识 volatile 关键字 255
12.2 机器硬件 CPU 257
12.3 Java 内存模型 262
第 13 章 深入 volatile 关键字 265
13.1 并发编程的三个重要特性 265
13.1.1 原子性 265
13.1.2 可见性 266
13.1.3 有序性 266
13.2 JMM 如何保证三大特性 268
13.2.1 JMM 与原子性 269
13.2.2 JMM 与可见性 271
13.2.3 JMM 与有序性 272
13.3 volatile 关键字深入解析 273
13.3.1 volatile 关键字的语义 274
13.3.2 volatile 的原理和实现机制 277
13.3.3 volatile 的使用场景 278

PDF 下载地址

文件下载

密码:

本段内容需要支付 50金币 查看

您未登录,请 点击登录 或者立即注册


丨极客文库, 版权所有丨如未注明 , 均为原创丨
本网站采用知识共享署名-非商业性使用-相同方式共享 3.0 中国大陆许可协议进行授权
转载请注明原文链接:Java 高并发编程详解:多线程与架构设计高清扫描 PDF 下载
喜欢 (0)
[247507792@qq.com]
分享 (0)
多啦H梦
关于作者:
热爱开源,热爱分享,谢谢大家的资瓷!

邀请您免费 注册账号 登录 即可参与讨论!