kindle电子书

资源下载,尽在我的书库!
首页 > kindle电子书库 > 典藏频道 > 工农林医、科学科普、IT网络

Java多线程编程实战指南(核心篇) (Java多线程编程实战系列)

  • 作者:[中] 黄文海
  • 体积:7.52 MB
  • 语言:中文
  • 日期:2018-03-09
  • 推荐:

简介:Java多线程编程实战指南(核心篇) (Java多线程编程实战系列)

电子书详细介绍

 随着现代处理器的生产工艺从提升处理器主频频率转向多核化,即在一块芯片上集成多个处理器内核(Core),多核处理器(Multicore Processor)离我们越来越近了——如今就连智能手机这样的消费类设备都已配备了4核乃至8核的处理器,更何况商用系统!在此背景下,以往靠单个处理器自身处理能力的提升所带来的软件计算性能提升的那种“免费午餐”已不复存在,这使得多线程编程在充分利用计算资源、提高软件服务质量方面扮演了越来越重要的角色。故而,掌握多线程编程技能对广大开发人员的重要性亦由此可见一斑。本书以基本概念、原理与方法为主线,辅以丰富的实战案例和生活化实例,并从Java虚拟机、操作系统和硬件多个层次与角度出发,循序渐进、系统地介绍Java平台下的多线程编程核心技术及相关工具。

编辑推荐

1 内容脉络清晰,讲解循序渐进,介绍系统全面。围绕多线程编程所要解决的问题及其面临的挑战,展开介绍多线程编程中的相关概念、原理与技术。
2 包含丰富的实战案例和生活化实例,案例配有源码,并且这些源码可以实际运行,方便读者实验。
3 书中包含提示、扩展阅读等内容,以问答的形式解答多线程编程初学者经常遇到的一些疑惑和问题。

媒体推荐

1 内容脉络清晰,讲解循序渐进,介绍系统全面。围绕多线程编程所要解决的问题及其面临的挑战,展开介绍多线程编程中的相关概念、原理与技术。2 包含丰富的实战案例和生活化实例,案例配有源码,并且这些源码可以实际运行,方便读者实验。3 书中包含提示、扩展阅读等内容,以问答的形式解答多线程编程初学者经常遇到的一些疑惑和问题。

作者简介

黄文海,2004年开始从事软件开发工作,近几年从事软件项目管理工作。在其工作过程中积累了丰富的技术指导经验和企业内部培训经验。曾在InfoQ中文站和IBM developerWorks上发表过十几篇技术、项目管理文章。

 

目录

第一部分多线程编程基础
第1章走近Java世界中的线程2
1.1进程、线程与任务2
1.2多线程编程简介4
1.2.1什么是多线程编程4
1.2.2为什么使用多线程4
1.3Java线程API简介5
1.3.1线程的创建、启动与运行5
1.3.2Runnable接口9
1.3.3线程属性12
1.3.4Thread类的常用方法14
1.3.5Thread类的一些废弃方法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.1volatile的作用105
3.8.2volatile变量的开销111
3.8.3volatile的典型应用场景与实战案例111
3.9实践:正确实现看似简单的单例模式120
3.10CAS与原子变量126
3.10.1CAS127
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.1Amdahl's定律172
4.5.2线程数设置的原则173
4.6本章小结177
第5章线程间协作179
5.1等待与通知:wait/notify179
5.1.1wait/notify的作用与用法180
5.1.2wait/notify的开销及问题188
5.1.3Object.notify()/notifyAll()的选用191
*5.1.4wait/notify与Thread.join()191
5.2Java条件变量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.1Java运行时存储空间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
第9章Java异步编程333
第10章Java多线程程序的调试与测试360
第二部分多线程编程进阶
第11章多线程编程的硬件基础与Java内存模型378
第12章Java多线程程序的性能调校415
Web参考资源457
参考文献463

我来说两句

本书评论

共有 0 条评论
图书分类
我的书库手机端
帮助中心
会员登录 ×
新用户注册 ×