阿里集团和1号店杰出技术性权威专家编写,Java并发编程行业的压卷之作,內容在InfoQ等社群营销获得高宽比认同
从JDK源代码、JVM、CPU等多方位全方位分析和解读Java并发编程的架构、原理和关键技术
随之互联网时代的到来,程序猿将会每日要解决几十个TB的信息,怎么让程序流程迅速且安全性地解决各种各样互联网大数据,就必须把握不一样的并发编程实体模型和并发编程方法。客户的一个点一下,必须在ms级解决完好几个每日任务,一样必须并发编程的参加。
并发编程是Java語言的关键特点之一,在Java服务平台上出示了很多基础的并发作用来輔助开发设计c#多线程应用程序。殊不知,这种相对性底层的并发作用与顶层应用程序的并发词义中间并找不到一种简易而形象化的投射关联。因而,怎样在Java并发应用程序中恰当且高效率地应用这种作用就变成Java开发者的关心重中之重。
《Java并发编程的艺术》更是以便处理这一难题而写的。书中选用由浅入深的解读方法,从并发编程的底层保持体制下手,逐渐介绍了在设计方案Java并发程序流程时各种各样关键的技术性、策略模式与运用,另外加上丰富多彩的实例编码,促使开发者可以迅速地理解Java并发编程的步聚,紧紧围绕着Java服务平台的基本并发作用迅速地搭建规模性的并发应用程序。
大量精采,跳转知名品牌店查寻>>
第1章介绍Java并发编程的挑戰,会向用户表明将会会碰到什么难题,及其怎样处理。第2章Java并发编程的底层保持原理,从CPU和JVM2个方面分析。第3章详尽深层次介绍了Java的运行内存实体模型。第4章从介绍多线程技术产生的益处刚开始,叙述了怎样起动和停止进程及其进程的情况,详尽论述了c#多线程中间开展通讯的基础方法和等候/通告經典范式。第5章介绍Java并发包中与锁有关的API和部件,及其这种API和部件的应用方法和保持关键点。第6章介绍了Java中的绝大多数并发器皿以及保持原理。第7章介绍了Java中的原子操作类,并得出一些案例。第8章介绍了Java中出示的许多并发工具类。第9章介绍了Java中的线程池保持原理和应用提议。第10章介绍了Executor架构的总体构造和组员部件。第11章介绍好多个并发编程的实战演练与并发编程难题清查。
目录
- 前言
- 第1章并发编程的挑战
- 1.1上下文切换
- 1.1.1多线程一定快吗
- 1.1.2测试上下文切换次数和时长
- 1.1.3如何减少上下文切换
- 1.1.4减少上下文切换实战
- 1.2死锁
- 1.3资源限制的挑战
- 1.4本章小结
- 第2章Java并发机制的底层实现原理
- 2.1volatile的应用
- 2.2synchronized的实现原理与应用
- 2.2.1Java对象头
- 2.2.2锁的升级与对比
- 2.3原子操作的实现原理
- 2.4本章小结
- 第3章Java内存模型
- 3.1Java内存模型的基础
- 3.1.1并发编程模型的两个关键问题
- 3.1.2Java内存模型的抽象结构
- 3.1.3从源代码到指令序列的重排序
- 3.1.4并发编程模型的分类
- 3.1.5happensbefore简介
- 3.2重排序
- 3.2.1数据依赖性
- 3.2.2asifserial语义
- 3.2.3程序顺序规则
- 3.2.4重排序对多线程的影响
- 3.3顺序一致性
- 3.3.1数据竞争与顺序一致性
- 3.3.2顺序一致性内存模型
- 3.3.3同步程序的顺序一致性效果
- 3.3.4未同步程序的执行特性
- 3.4volatile的内存语义
- 3.4.1volatile的特性
- 3.4.2volatile写读建立的happensbefore关系
- 3.4.3volatile写读的内存语义
- 3.4.4volatile内存语义的实现
- 3.4.5JSR133为什么要增强volatile的内存语义
- 3.5锁的内存语义
- 3.5.1锁的释放获取建立的happensbefore关系
- 3.5.2锁的释放和获取的内存语义
- 3.5.3锁内存语义的实现
- 3.5.4concurrent包的实现
- 3.6final域的内存语义
- 3.6.1final域的重排序规则
- 3.6.2写final域的重排序规则
- 3.6.3读final域的重排序规则
- 3.6.4final域为引用类型
- 3.6.5为什么final引用不能从构造函数内"溢出"
- 3.6.6final语义在处理器中的实现
- 3.6.7JSR133为什么要增强f?inal的语义
- 3.7happensbefore
- 3.7.1JMM的设计
- 3.7.2happensbefore的定义
- 3.7.3happensbefore规则
- 3.8双重检查锁定与延迟初始化
- 3.8.1双重检查锁定的由来
- 3.8.2问题的根源
- 3.8.3基于volatile的解决方案
- 3.8.4基于类初始化的解决方案
- 3.9Java内存模型综述
- 3.9.1处理器的内存模型
- 3.9.2各种内存模型之间的关系
- 3.9.3JMM的内存可见性保证
- 3.9.4JSR133对旧内存模型的修补
- 3.10本章小结
- 第4章Java并发编程基础
- 4.1线程简介
- 4.1.1什么是线程
- 4.1.2为什么要使用多线程
- 4.1.3线程优先级
- 4.1.4线程的状态
- 4.1.5Daemon线程
- 4.2启动和终止线程
- 4.2.1构造线程
- 4.2.2启动线程
- 4.2.3理解中断
- 4.2.4过期的suspend()、resume()和stop()
- 4.2.5安全地终止线程
- 4.3线程间通信
- 4.3.1volatile和synchronized关键字
- 4.3.2等待/通知机制
- 4.3.3等待/通知的经典范式
- 4.3.4管道输入/输出流
- 4.3.5Thread.join()的使用
- 4.3.6ThreadLocal的使用
- 4.4线程应用实例
- 4.4.1等待超时模式
- 4.4.2一个简单的数据库连接池示例
- 4.4.3线程池技术及其示例
- 4.4.4一个基于线程池技术的简单Web服务器
- 4.5本章小结
- 第5章Java中的锁
- 5.1Lock接口
- 5.2队列同步器
- 5.2.1队列同步器的接口与示例
- 5.2.2队列同步器的实现分析
- 5.3重入锁
- 5.4读写锁
- 5.4.1读写锁的接口与示例
- 5.4.2读写锁的实现分析
- 5.5LockSupport工具
- 5.6Condition接口
- 5.6.1Condition接口与示例
- 5.6.2Condition的实现分析
- 5.7本章小结
- 第6章Java并发容器和框架
- 6.1ConcurrentHashMap的实现原理与使用
- 6.1.1为什么要使用ConcurrentHashMap
- 6.1.2ConcurrentHashMap的结构
- 6.1.3ConcurrentHashMap的初始化
- 6.1.4定位Segment
- 6.1.5ConcurrentHashMap的操作
- 6.2ConcurrentLinkedQueue
- 6.2.1ConcurrentLinkedQueue的结构
- 6.2.2入队列
- 6.2.3出队列
- 6.3Java中的阻塞队列
- 6.3.1什么是阻塞队列
- 6.3.2Java里的阻塞队列
- 6.3.3阻塞队列的实现原理
- 6.4Fork/Join框架
- 6.4.1什么是Fork/Join框架
- 6.4.2工作窃取算法
- 6.4.3Fork/Join框架的设计
- 6.4.4使用Fork/Join框架
- 6.4.5Fork/Join框架的异常处理
- 6.4.6Fork/Join框架的实现原理
- 6.5本章小结
- 第7章Java中的13个原子操作类
- 7.1原子更新基本类型类
- 7.2原子更新数组
- 7.3原子更新引用类型
- 7.4原子更新字段类
- 7.5本章小结
- 第8章Java中的并发工具类
- 8.1等待多线程完成的CountDownLatch
- 8.2同步屏障CyclicBarrier
- 8.2.1CyclicBarrier简介
- 8.2.2CyclicBarrier的应用场景
- 8.2.3CyclicBarrier和CountDownLatch的区别
- 8.3控制并发线程数的Semaphore
- 8.4线程间交换数据的Exchanger
- 8.5本章小结
- 第9章Java中的线程池
- 9.1线程池的实现原理
- 9.2线程池的使用
- 9.2.1线程池的创建
- 9.2.2向线程池提交任务
- 9.2.3关闭线程池
- 9.2.4合理地配置线程池
- 9.2.5线程池的监控
- 9.3本章小结
- 第10章Executor框架
- 10.1Executor框架简介
- 10.1.1Executor框架的两级调度模型
- 10.1.2Executor框架的结构与成员
- 10.2ThreadPoolExecutor详解
- 10.2.1FixedThreadPool详解
- 10.2.2SingleThreadExecutor详解
- 10.2.3CachedThreadPool详解
- 10.3ScheduledThreadPoolExecutor详解
- 10.3.1ScheduledThreadPoolExecutor的运行机制
- 10.3.2ScheduledThreadPoolExecutor的实现
- 10.4FutureTask详解
- 10.4.1FutureTask简介
- 10.4.2FutureTask的使用
- 10.4.3FutureTask的实现
- 10.5本章小结
- 第11章Java并发编程实践
- 11.1生产者和消费者模式
- 11.1.1生产者消费者模式实战
- 11.1.2多生产者和多消费者场景
- 11.1.3线程池与生产消费者模式
- 11.2线上问题定位
- 11.3性能测试
- 11.4异步任务池
- 11.5本章小结