《Java多线程编程核心技术》 高洪岩[作者] pdf
编程学习 3年前 (2020-05-08) 1,473 人围观 0作品简介
目 录 Contents
前 言
第 1 章 Java 多线程技能 1
1.1 进程和多线程的概念及线程的
优点 1
1.2 使用多线程 3
1.2.1 继承 Thread 类 4
1.2.2 实现 Runnable 接口 8
1.2.3 实例变量与线程安全 9
1.2.4 留意 i-- 与 System.out.println()
的异常 14
1.3 currentThread() 方法 16
1.4 isAlive() 方法 18
1.5 sleep() 方法 20
1.6 getId() 方法 22
1.7 停止线程 23
1.7.1 停止不了的线程 23
1.7.2 判断线程是否是停止状态 24
1.7.3 能停止的线程——异常法 27
1.7.4 在沉睡中停止 30
1.7.5 能停止的线程——暴力停止 32
1.7.6 方法 stop() 与 java.lang.
ThreadDeath 异常 33
1.7.7 释放锁的不良后果 34
1.7.8 使用 return 停止线程 35
1.8 暂停线程 36
1.8.1 suspend 与 resume 方法的
使用 36
1.8.2 suspend 与 resume 方法的缺
点——独占 38
1.8.3 suspend 与 resume 方法的
缺点——不同步 40
1.9 yield 方法 42
1.10 线程的优先级 43
1.10.1 线程优先级的继承特性 43
1.10.2 优先级具有规则性 44
1.10.3 优先级具有随机性 47
1.10.4 看谁运行得快 49
1.11 守护线程 50
1.12 本章小结 51
第 2 章 对象及变量的并发访问 52
2.1 synchronized 同步方法 52
VII
2.1.1 方法内的变量为线程安全 53
2.1.2 实例变量非线程安全 54
2.1.3 多个对象多个锁 57
2.1.4 synchronized 方法与锁对象 59
2.1.5 脏读 63
2.1.6 synchronized 锁重入 65
2.1.7 出现异常,锁自动释放 68
2.1.8 同步不具有继承性 69
2.2 synchronized 同步语句块 71
2.2.1 synchronized 方法的弊端 72
2.2.2 synchronized 同步代码块的
使用 74
2.2.3 用同步代码块解决同步方法的
弊端 76
2.2.4 一半异步,一半同步 76
2.2.5 synchronized 代码块间的
同步性 78
2.2.6 验证同步 synchronized(this)
代码块是锁定当前对象的 80
2.2.7 将任意对象作为对象监视器 82
2.2.8 细化验证 3 个结论 91
2.2.9 静态同步 synchronized 方法与
synchronized(class) 代码块 96
2.2.10 数据类型 String 的常量池
特性 102
2.2.11 同步 synchronized 方法无限
等待与解决 105
2.2.12 多线程的死锁 107
2.2.13 内置类与静态内置类 109
2.2.14 内置类与同步:实验 1 111
2.2.15 内置类与同步:实验 2 113
2.2.16 锁对象的改变 114
2.3 volatile 关键字 118
2.3.1 关键字 volatile 与死循环 118
2.3.2 解决同步死循环 119
2.3.3 解决异步死循环 120
2.3.4 volatile 非原子的特性 124
2.3.5 使用原子类进行 i 操作 126
2.3.6 原子类也并不完全安全 127
2.3.7 synchronized 代码块有 volatile
同步的功能 130
2.4 本章总结 132
第 3 章 线程间通信 133
3.1 等待 / 通知机制 133
3.1.1 不使用等待 / 通知机制实现
线程间通信 133
3.1.2 什么是等待 / 通知机制 135
3.1.3 等待 / 通知机制的实现 136
3.1.4 方法 wait() 锁释放与 notify()
锁不释放 143
3.1.5 当 interrupt 方法遇到 wait
方法 146
3.1.6 只通知一个线程 148
3.1.7 唤醒所有线程 150
3.1.8 方法 wait(long) 的使用 150
3.1.9 通知过早 152
3.1.10 等待 wait 的条件发生
变化 155
3.1.11 生产者 / 消费者模式实现 158
3.1.12 通过管道进行线程间通信:
字节流 171
VIII
3.1.13 通过管道进行线程间通信:
字符流 174
3.1.14 实战:等待 / 通知之交叉
备份 177
3.2 方法 join 的使用 179
3.2.1 学习方法 join 前的铺垫 179
3.2.2 用 join() 方法来解决 180
3.2.3 方法 join 与异常 181
3.2.4 方法 join(long) 的使用 183
3.2.5 方法 join(long) 与 sleep(long)
的区别 184
3.2.6 方法 join() 后面的代码提前
运行:出现意外 187
3.2.7 方法 join() 后面的代码提前
运行:解释意外 189
3.3 类 ThreadLocal 的使用 191
3.3.1 方法 get() 与 null 191
3.3.2 验证线程变量的隔离性 192
3.3.3 解决 get() 返回 null 问题 195
3.3.4 再次验证线程变量的
隔离性 195
3.4 类 InheritableThreadLocal 的
使用 197
3.4.1 值继承 197
3.4.2 值继承再修改 198
3.5 本章总结 199
第 4 章 Lock 的使用 200
4.1 使用 ReentrantLock 类 200
4.1.1 使用 ReentrantLock
实现同步:测试 1 200
4.1.2 使用 ReentrantLock
实现同步:测试 2 202
4.1.3 使用 Condition 实现等待 /
通知错误用法与解决 204
4.1.4 正确使用 Condition
实现等待 / 通知 207
4.1.5 使用多个 Condition 实现通知
部分线程:错误用法 208
4.1.6 使用多个 Condition 实现通知
部分线程:正确用法 210
4.1.7 实现生产者 / 消费者模式:
一对一交替打印 213
4.1.8 实现生产者 / 消费者模式:
多对多交替打印 214
4.1.9 公平锁与非公平锁 216
4.1.10 方法 getHoldCount()、
getQueueLength() 和
getWaitQueueLength()
IX
4.1.15 方法 awaitUntil() 的使用 232
4.1.16 使用 Condition 实现顺序
执行 234
4.2 使用 ReentrantReadWriteLock
类 236
4.2.1 类 ReentrantReadWriteLock
的使用:读读共享 236
4.2.2 类 ReentrantReadWriteLock
的使用:写写互斥 237
4.2.3 类 ReentrantReadWriteLock
的使用:读写互斥 238
4.2.4 类 ReentrantReadWriteLock
的使用:写读互斥 239
4.3 本章总结 240
第 5 章 定时器 Timer 241
5.1 定时器 Timer 的使用 241
5.1.1 方法 schedule(TimerTask task,
Date time)的测试 241
5.1.2 方法 schedule(TimerTask task,
Date firstTime, long period)
的测试 247
5.1.3 方法 schedule(TimerTask task,
long delay) 的测试 252
5.1.4 方法 schedule(TimerTask task,
long delay, long period)
的测试 253
5.1.5 方法 scheduleAtFixedRate
(TimerTask task, Date firstTime,
long period) 的测试 254
5.2 本章总结 261
第 6 章 单例模式与多线程 262
6.1 立即加载 /“饿汉模式” 262
6.2 延迟加载 /“懒汉模式” 263
6.3 使用静态内置类实现单例模式 271
6.4 序列化与反序列化的单例模式
实现 272
6.5 使用 static 代码块实现
单例模式 274
6.6 使用 enum 枚举数据类型实现
单例模式 275
6.7 完善使用 enum 枚举实现
单例模式 277
6.8 本章总结 278
第 7 章 拾遗增补 279
7.1 线程的状态 279
7.1.1 验证 NEW、RUNNABLE 和
TERMINATED 280
7.1.2 验证 TIMED_WAITING 281
7.1.3 验证 BLOCKED 282
7.1.4 验证 WAITING 284
7.2 线程组 285
7.2.1 线程对象关联线程组:
1 级关联 285
7.2.2 线程对象关联线程组:
多级关联 287
7.2.3 线程组自动归属特性 288
7.2.4 获取根线程组 288
7.2.5 线程组里加线程组 289
7.2.6 组内的线程批量停止 290
7.2.7 递归与非递归取得组内对象 290
X
7.3 使线程具有有序性 291
7.4 SimpleDateFormat 非线程安全 293
7.4.1 出现异常 293
7.4.2 解决异常方法 1 294
7.4.3 解决异常方法 2 295
7.5 线程中出现异常的处理 297
7.6 线程组内处理异常 299
7.7 线程异常处理的传递 301
7.8 本章总结 306
📚作品详情
文件名称:《Java多线程编程核心技术》
更新时间:2020-05-09
详情列表:
💡声明
本站收录优秀作品内容、精彩书评、互联网技术文章、软件使用手册、书籍作品杂谈等内容,不提供电子书下载,请自行搜索下载或购买正版。如有读书交流沟通的想法可联系taoshuzhai521@163.com。博主会第一时间反馈,谢谢合作!