作品简介

本书涵盖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 Java 8新特性之CompletableFuture
  • 11.4 CompletionStage方法及作用说明
  • 11.5 CompletableFuture综合实战
  • 11.6 CompletableFuture实现原理分析
  • 11.7 核心源码分析
  • 11.8 本章小结
展开全部