写点什么

五位阿里大牛联手撰写的《深入浅出 Java 多线程》,站在巨人的肩膀上学习!

  • 2021 年 11 月 11 日
  • 本文字数:2238 字

    阅读完需:约 7 分钟

6.1 并发编程模型的两个关键问题


6.2 Java 内存模型的抽象结构


  • 6.2.1 运?时内存的划分

  • 6.2.2 既然堆是共享的,为什么在堆中会有内存不可?问题?

  • 6.2.3 JMM 与 Java 内存区域划分的区别与联系



第 7 章 重排序与 happens-before


==================================================================================


7.1 什么是重排序?


7.2 顺序一致性模型与 JMM 的保证


  • 7.2.1 数据竞争与顺序一致性

  • 7.2.2 顺序一致性模型

  • 7.2.3 JMM 中同步程序的顺序一致性效果

  • 7.2.4 JMM 中未同步程序的顺序一致性效果


7.3 happens-before


  • 7.3.1 什么是 happens-before?

  • 7.3.2 天然的 happens-before 关系



第 8 章 volatile


========================================================================


8.1 几个基本概念


  • 8.1.1 内存可见性

  • 8.1.2 重排序

  • 8.1.3 happens-before 规则


8.2 volatile 的内存语义


  • 8.2.1 内存可见性

  • 8.2.1 禁止重排序


8.3 volatile 的用途



第 9 章 synchronized 与锁


==============================================================================


9.1 Synchronized 关键字


9.2 几种锁


  • 9.2.1 Java 对象头

  • 9.2.2 偏向锁

  • 9.2.3 轻量级锁

  • 9.2.4 重量级锁

  • 9.2.5 总结锁的升级流程

  • 9.2.6 各种锁的优缺点对比



第 10 章 乐观锁和悲观锁


========================================================================


10.1 乐观锁与悲观锁的概念


10.2 CAS 的概念


10.3 Java 实现 CAS 的原理 - Unsafe 类


10.4 原子操作-AtomicInteger 类源码简析


10.5 CAS 实现原子操作的三大问题


  • 10.5.1 ABA 问题

  • 10.5.2 循环时间长开销大

  • 10.5.3 只能保证一个共享变量的原子操作



转发+关注,然后私信回复我 “多线程”? 即可获得《深入浅出 Java 多线程》文档资料的免费领取方式。


第 11 章 AQS


====================================================================


11.1 AQS 简介


11.2 AQS 的数据结构


11.3 资源共享模式


11.4 AQS 的主要方法源码解析


  • 11.4.1 获取资源



第 12 章 线程池原理


======================================================================


12.1 为什么要使用线程池


12.2 线程池的原理


  • 12.2.1 ThreadPoolExecutor 提供的构造方法

  • 12.2.2 ThreadPoolExecutor 的策略

  • 12.2.3 线程池主要的任务处理流程

  • 12.2.4 ThreadPoolExecutor 如何做到线程复用的?


12.3 四种常见的线程池


  • 12.3.1 newCachedThreadPool

  • 12.3.2 newFixedThreadPool

  • 12.3.3 newSingleThreadExecutor

  • 12.3.4 newScheduledThreadPool



第 13 章 阻塞队列


=====================================================================


13.1 阻塞队列的由来


13.2 BlockingQueue 的操作方法


13.3 BlockingQueue 的实现类


  • 13.3.1 ArrayBlockingQueue

  • 13.3.2 LinkedBlockingQueue

  • 13.3.3 DelayQueue

  • 13.3.4 PriorityBlockingQueue

  • 13.3.5 SynchronousQueue


13.5 阻塞队列的原理


13.6 示例和使用场景


  • 13.6.1 生产者-消费者模型

  • 13.6.2 线程池中使用阻塞队列



第 14 章 锁接口和类


======================================================================


14.1 synchronized 的不足之处


14.2 锁的几种分类


  • 14.2.1 可重入锁和非可重入锁

  • 14.2.2 公平锁与非公平锁

  • 14.2.3 读写锁和排它锁


14.3 JDK 中有关锁的一些接口和类


  • 14.3.1 抽象类 AQS/AQLS/AOS

  • 14.3.2 接口 Condition/Lock/ReadWriteLock

  • 14.3.3 ReentrantLock

  • 14.3.4 ReentrantReadWriteLock

  • 14.3.5 StampedLock



第 15 章 并发容器集合


=======================================================================


15.1 同步容器与并发容器


15.2 并发容器类介绍


  • 15.2.1 并发 Map

  • 15.2.2 并发 Queue

  • 15.2.3 并发 Set



第 16 章 CopyOnWrite 容器


==============================================================================


16.1 什么是 CopyOnWrite 容器


16.2 CopyOnWriteArrayList


16.3 CopyOnWrite 的业务中实现



第 17 章 通信工具类


======================================================================


17.1 Semaphore


  • 17.1.1 Semaphore 介绍

  • 17.1.2 Semaphore 案例

  • 17.1.3 Semaphore 原理


17.2 Exchanger


17.3 CountDownLatch


  • 17.3.1 CountDownLatch 介绍

  • 17.3.2 CountDownLatch 案例

  • 17.3.3 CountDownLatch 原理


17.4 CyclicBarrier


  • 17.4.1 CyclicBarrier 介绍

  • 17.4.2 CyclicBarrier Barrier 被破坏

  • 17.4.3 CyclicBarrier 案例

  • 17.4.4 CyclicBarrier 原理


17.5 Phaser


  • 17.5.1 Phaser 介绍

  • 17.5.2 Phaser 案例

  • 17.5.3 Phaser 原理



第 18 章 Fork/Join 框架


============================================================================


18.1 什么是 Fork/Join


18.2 工作窃取算法


18.3 Fork/Join 的具体实现


  • 18.3.1 ForkJoinTask

  • 18.3.2 ForkJoinPool

  • 18.4 Fork/Join 的使用



第 19 章 Java 8 Stream 并行计算原理


====================================================================================


19.1 Java 8 Stream 简介


19.2 Stream 单线程串行计算


19.3 Stream 多线程并行计算


19.4 从源码看 Stream 并行计算原理


19.5 Stream 并行计算的性能提升


![站在巨人肩膀上学习:五位阿里大牛撰写的《深入浅出 Java 多线程》](https://imgconvert.csdnimg.cn/aHR0cDovL3AxLnBzdGF0cC5jb20vbGFyZ2UvcGdjLWltYWd


【一线大厂Java面试题解析+后端开发学习笔记+最新架构讲解视频+实战项目源码讲义】
浏览器打开:qq.cn.hn/FTf 免费领取
复制代码


lLzU3OTYwNzVjMmEzNzQyM2M4ODcxMTkzNjYzYzY1ZWUx?x-oss-process=image/format,png)


第二十章 计划任务


=====================================================================


20.1 使用案例


20.2 类结构


20.3 主要方法介绍


  • 20.3.1 schedule

  • 20.3.2 scheduledAtFixedRate

  • 20.3.3 scheduledAtFixedDelay

评论

发布
暂无评论
五位阿里大牛联手撰写的《深入浅出Java多线程》,站在巨人的肩膀上学习!