产品参数:
目录
*一部分 多线程编程基础
*1章 走近Java世界中的线程2
1.1 进程、线程与任务2
1.2 多线程编程简介4
1.2.1 什么是多线程编程4
1.2.2 为什么使用多线程4
1.3 Java线程API简介5
1.3.1 线程的创建、启动与运行5
1.3.2 Runnable接口9
1.3.3 线程属*12
1.3.4 Thread类的常用方法14
1.3.5 Thread类的一些废弃方法16
1.4 无处不在的线程17
1.5 线程的层次关系19
1.6 线程的生命周期状态21
1.7 线程的监视22
1.8 多线程编程简单运用实例26
*1.9 多线程编程的优势和风险27
1.10 本章小结29
*2章 多线程编程的目标与挑战31
2.1 串行、并发与并行31
2.2 竞态33
2.2.1 二维表分析法:解释竞态的结果37
2.2.2 竞态的模式与竞态产生的条件39
2.3 线程安全*42
2.4 原子*43
2.5 可见*49
2.6 有序*56
2.6.1 重排序的概念56
2.6.2 指令重排序57
2.6.3 存储子系统重排序63
2.6.4 貌似串行语义66
2.6.5 保证内存访问的顺序*68
2.7 上下文切换69
2.7.1 上下文切换及其产生原因69
2.7.2 上下文切换的分类及具体诱因70
2.7.3 上下文切换的开销和测量71
2.8 线程的活*故障73
2.9 资源争用与调度74
2.10 本章小结77
*3章 Java线程同步机制80
3.1 线程同步机制简介80
3.2 锁概述81
3.2.1 锁的作用82
3.2.2 与锁相关的几个概念84
3.2.3 锁的开销及其可能导致的问题86
3.3 内部锁:synchronized关键字86
3.4 显式锁:Lock接口89
3.4.1 显式锁的调度91
3.4.2 显式锁与内部锁的比较92
3.4.3 内部锁还是显式锁:锁的*用95
*3.4.4 改进型锁:读写锁95
3.5 锁的适用场景99
3.6 线程同步机制的底层助手:内存屏障99
*3.7 锁与重排序102
3.8 轻量级同步机制:volatile关键字105
3.8.1 volatile的作用105
3.8.2 volatile变量的开销111
3.8.3 volatile的典型应用场景与实战案例111
3.9 实践:正确实现看似简单的单例模式120
3.10 CAS与原子变量126
3.10.1 CAS127
3.10.2 原子操作工具:原子变量类129
3.11 对象的发布与逸出135
3.11.1 对象的初始化安全:重访final与static137
3.11.2 安全发布与逸出142
3.12 本章小结143
*4章 牛刀小试:玩转线程148
4.1 挖掘可并发点148
4.2 新战场上的老武器:分而治之148
4.3 基于数据的分割实现并发化149
4.4 基于任务的分割实现并发化158
4.4.1 按任务的资源消耗属*分割159
4.4.2 实战案例的启发169
4.4.3 按处理步骤分割171
4.5 合理设置线程数172
4.5.1 Amdahl's定律172
4.5.2 线程数设置的原则173
4.6 本章小结177
*5章 线程间协作179
5.1 等待与通知:wait/notify179
5.1.1 wait/notify的作用与用法180
5.1.2 wait/notify的开销及问题188
5.1.3 Object.notify()/notifyAll()的*用191
*5.1.4 wait/notify与Thread.join()191
5.2 Java条件变量192
5.3 倒计时协调器:CountDownLatch198
5.4 栅栏(CyclicBarrier)203
5.5 生产者―消费者模式210
5.5.1 阻塞队列213
5.5.2 限购:流量控制与信号量(Semaphore)216
*5.5.3 管道:线程间的直接输出与输入218
5.5.4 一手交钱,一手交货:双缓冲与Exchanger221
5.5.5 一个还是一批:产品的粒度223
5.5.6 再探线程与任务之间的关系224
5.6 对不起,打扰一下:线程中断机制225
5.7 线程停止:看似简单,实则不然228
5.7.1 生产者―消费者模式中的线程停止233
5.7.2 实践:Web应用中的线程停止233
5.8 本章小结236
*6章 保障线程安全的设计技术240
*6.1 Java运行时存储空间240
6.2 大公无私:无状态对象243
6.3 以“不变”应万变:不可变对象248
6.4 我有我地盘:线程特有对象254
6.4.1 线程特有对象可能导致的问题及其规避258
6.4.2 线程特有对象的典型应用场景264
6.5 装饰器模式265
6.6 并发集合267
6.7 本章小结270
*7章 线程的活*故障273
7.1 鹬蚌相争:死锁273
7.1.1 死锁的检测274
7.1.2 死锁产生的条件与规避283
7.1.3 死锁的恢复296
7.2 沉睡不醒的睡美人:锁死301
7.2.1 信号丢失锁死301
7.2.2 嵌套监视器锁死301
7.3 巧妇难为无米之炊:线程饥饿307
7.4 屡战屡败,屡败屡战:活锁307
7.5 本章小结308
*8章 线程管理310
8.1 线程组310
8.2 可靠*:线程的未捕获异常与监控311
8.3 有组织有纪律:线程工厂316
8.4 线程的暂挂与恢复318
8.5 线程的高效利用:线程池320
8.5.1 任务的处理结果、异常处理与取消326
8.5.2 线程池监控329
8.5.3 线程池死锁330
8.5.4 工作者线程的异常终止330
8.6 本章小结331
*9章 Java异步编程333
9.1 同步计算与异步计算333
9.2 Java Executor框架336
9.2.1 实用工具类Executors337
9.2.2 异步任务的批量执行:CompletionService339
9.3 异步计算助手:FutureTask344
9.3.1 实践:实现XML文档的异步解析345
9.3.2 可重复执行的异步任务349
9.4 计划任务352
9.5 本章小结358
*10章 Java多线程程序的调试与测试360
10.1 多线程程序的调试技巧360
10.1.1 使用监视点360
10.1.2 设置暂挂策略361
10.2 多线程程序的测试363
10.2.1 可测试*364
10.2.2 静态检查工具:FindBugs369
10.2.3 多线程程序的代码复审370
10.2.4 多线程程序的单元测试:JCStress372
10.3 本章小结375
*二部分 多线程编程进阶
*11章 多线程编程的硬件基础与Java内存模型378
11.1 填补处理器与内存之间的鸿沟:高速缓存378
11.2 数据世界的交通规则:缓存一致*协议382
11.3 硬件缓冲区:写缓冲器与无效化队列386
11.3.1 存储转发388
11.3.2 再探内存重排序388
11.3.3 再探可见*391
11.4 基本内存屏障392
11.5 Java同步机制与内存屏障395
11.5.1 volatile关键字的实现395
11.5.2 synchronized关键字的实现397
11.5.3 Java虚拟机对内存屏障使用的优化398
11.5.4 final关键字的实现398
11.6 Java内存模型399
11.6.1 什么是Java内存模型400
11.6.2 happen(s)-before关系401
11.6.3 再探对象的安全发布407
11.6.4 JSR 133411
11.7 共享变量与*能411
11.8 本章小结411
*12章 Java多线程程序的*能调校415
12.1 Java虚拟机对内部锁的优化415
12.1.1 锁消除415
12.1.2 锁粗化417
12.1.3 偏向锁419
12.1.4 适应*锁420
12.2 优化对锁的使用421
12.2.1 锁的开销与锁争用监视421
12.2.2 使用可参数化锁424
12.2.3 减小临界区的长度428
12.2.4 减小锁的粒度432
12.2.5 考虑锁的替代品438
12.3 减少系统内耗:上下文切换438
12.4 多线程编程的“三十六计”:多线程设计模式440
12.5 *能的隐形杀手:伪共享441
12.5.1 Java对象内存布局442
12.5.2 伪共享的侦测与消除445
12.6 本章小结454
Web参考资源457
参考文献463
随着现代处理器的生产工艺从提升处理器主频频率转向多核化,即在一块芯片上集成多个处理器内核(Core),多核处理器(Multicore Processor)离我们越来越近了——如今就连智能手机这样的消费类设备都已配备了4核乃至8核的处理器,更何况商用系统!在此背景下,以往靠单个处理器自身处理能力的提升所带来的软件计算*能提升的那种“免费午餐”已不复存在,这使得多线程编程在充分利用计算资源、提高软件服务质量方面扮演了越来越重要的角色。故而,掌握多线程编程技能对广大开发人员的重要*亦由此可见一斑。本书以基本概念、原理与方法为主线,辅以丰富的实战案例和生活化实例,并从Java虚拟机、操作系统和硬件多个层次与角度出发,循序渐进、系统地介绍Java平台下的多线程编程核心技术及相关工具。
作者:暂无黄文海,2004年开始从事软件开发工作,近几年从事软件项目管理工作。在其工作过程中积累了丰富的技术指导经验和企业内部培训经验。曾在InfoQ中文站和IBM developerWorks上发表过十几篇技术、项目管理文章。
计算机通信 1
价格: ¥3.00
计算机通信 1
价格: ¥2.50
计算机通信 0
价格: ¥0.00
计算机通信 1
价格: ¥0.00
计算机通信 0
价格: ¥0.00
计算机通信 3
价格: ¥0.00
计算机通信 0
价格: ¥0.00
计算机通信 0
价格: ¥0.00
计算机通信 0
价格: ¥0.00
计算机通信 1
价格: ¥0.00
计算机通信 0
价格: ¥0.00
计算机通信 0
价格: ¥0.00
计算机通信 3
价格: ¥0.00
计算机通信 1
价格: ¥0.00
计算机通信 0
价格: ¥0.00