本书涵盖 Java 并发编程体系的核心库和核心类的使用及原理分析,具体包括线程、synchronized、volatile、J.U.C 中的重入锁和读写锁、并发中的条件等待机制、J.U.C 并发工具集、深度探索并发编程不得不知的工具、阻塞队列、并发安全集合、线程池、异步编程特性等。书中针对每一个技术点,纵向分析与其相关的所有内容,并且对相关知识点进行了非常详细的说明,同时从架构实践的角度来看待并发,通过大量实战案例让读者理解各类技术在实际应用中的使用方法。作者花费了 4 年时间,投入了大量精力对并发编程领域进行了深入的研究,将自己 13 年的Java 开发及架构经验融入了书中,对各位读者来说,这应该是一本非常值得阅读的图书。


作者

谭锋(Mic) 咕泡学院联合创始人,2017年开始创业,至今已有4年多时间。拥有13年Java开发及架构经验,其中包括4年授课经验,培养了3万多名学员,学员遍布一二线城市的主流互联网企业。曾就职于中国电信、平安支付、挖财等公司,担任业务架构师,在平安支付主导了基于Dubbo的服务化架构设计和落地,在挖财推动了基于Spring Boot的微服务化架构改造。因此对微服务架构和高并发架构有非常深入的研究,以及丰富的实践经验。目前担任教学总监一职,负责微服务及高并发领域的课程设计和研发。


查看全部
目录

作者简介

内容简介

前言

第1章 Java线程的实践及原理揭秘

1.1 如何理解系统并发

1.2 系统如何支撑高并发

1.3 线程的前世今生

1.4 在Java中如何使用多线程

1.5 多线程如何应用到实际场景

1.6 多线程的基本原理

1.7 线程的运行状态

1.8 如何正确终止线程

1.9 理解上下文切换带来的性能影响

1.10 揭秘守护线程

1.11 快速定位并解决线程导致的生产问题

1.12 本章小结

第2章 深度揭秘synchronized实现原理

2.1 揭秘多线程环境下的原子性问题

2.2 Java中的synchronized同步锁

2.3 关于synchronized同步锁的思考

2.4 synchronzied同步锁标记存储分析

2.5 synchronized的锁类型

2.6 关于CAS机制的实现原理分析

2.7 锁升级的实现流程

2.8 synchronized使用不当带来的死锁问题

2.9 本章小结

第3章 volatile为什么能解决可见性和有序性问题

3.1 关于线程的可见性问题分析

3.2 深度理解可见性问题的本质

3.3 volatile如何解决可见性问题

3.4 指令重排序导致的可见性问题

3.5 从CPU层面深度剖析指令重排序的本质

3.6 通过内存屏障解决内存系统重排序问题

3.7 Java Memory Mode

3.8 揭秘volatile实现原理

3.9 Happens-Before模型

3.10 本章小结

第4章 深入浅出分析J.U.C中的重入锁和读写锁

4.1 J.U.C中与锁相关的API

4.2 ReentrantLock的设计猜想

4.3 ReentrantLock实现原理分析

4.4 AbstractQueuedSynchronizer

4.5 ReentrantLock源码分析

4.6 ReentrantLock释放锁源码分析

4.7 分析ReentrantReadWriteLock类的原理

4.8 StampedLock的原理分析

4.9 本章小结

第5章 从线程通信来窥探并发中的条件等待机制

5.1 wait/notify

5.2 通过Thread.join获取线程执行结果

5.3 J.U.C中的条件控制Condition

5.4 Condition的设计猜想

5.5 Condition的源码分析

5.6 本章小结

第6章 J.U.C并发工具集实战及原理分析

6.1 CountDownLatch简单介绍

6.2 CountDownLatch底层原理

6.3 Semaphore

6.4 Semaphore原理分析

6.5 CyclicBarrier

6.6 CyclicBarrier实现原理及源码

6.7 本章小结

第7章 深度探索并发编程不得不知的工具

7.1 初步认识ThreadLocal

7.2 ThreadLocal的应用场景分析

7.3 ThreadLocal解决SimpleDateFormat线程安全问题

7.4 ThreadLocal实现原理分析

7.5 任务拆分与聚合Fork/Join

7.6 Fork/Join的实现原理

7.7 Fork/Join的核心源码分析

7.8 使用Fork/Join解决实际问题

7.9 本章小结

第8章 深度剖析阻塞队列的设计原理及实现

8.1 什么是阻塞队列

8.2 Java中提供的阻塞队列

8.3 阻塞队列中提供的方法

8.4 阻塞队列的使用

8.5 阻塞队列应用实战

8.6 详解J.U.C中阻塞队列的使用

8.7 阻塞队列的实现原理

8.8 本章小结

第9章 深度解读并发安全集合的原理及源码

9.1 并发安全集合ConcurrentHashMap

9.2 正确理解ConcurrentHashMap的线程安全性

9.3 ConcurrentHashMap的数据结构

9.4 深度分析ConcurrentHashMap中的并发扩容机制

9.5 分段锁设计提高统计元素数量的性能

9.6 详解红黑树的实现原理

9.7 ConcurrentHashMap中红黑树的使用

9.8 Java中其他并发安全集合

9.9 深度分析数据结构:跳表

9.10 本章小结

第10章 站在架构的角度思考线程池的设计及原理

10.1 线程池的优势

10.2 Java中提供的线程池

10.3 Executor框架详解

10.4 线程池的设计猜想

10.5 从实现原理了解线程池

10.6 线程池核心源码剖析

10.7 合理设置线程池参数

10.8 线程池的监控

10.9 本章小结

第11章 Java并发编程中的异步编程特性

11.1 了解Future/Callable

11.2 Future/Callable的实现原理

11.3 Java8新特性之CompletableFuture

11.4 CompletionStage方法及作用说明

11.5 CompletableFuture综合实战

11.6 CompletableFuture实现原理分析

11.7 核心源码分析

11.8 本章小结

查看全部
书评
查看更多
请您登录后发表评论 登录 | 注册
我的评分:
提交
0/400