随着硬件性能的迅猛发展与大数据时代的来临,并发编程日益成为编程中不可忽略的重要组成部分。并发编程是非常广泛的概念,向下依赖于操作系统、存储等,与分布式系统、 微服务等,而又会具体落地于Java并发编程、Go 并发编程、JavaScript 异步编程等领域。云计算承诺在所有维度上(内存、计算、存储等)实现无限的可扩展性,并发编程及其相关理论也是我们构建大规模分布式应用的基础。
为了让代码运行得更快,单纯依靠更快的硬件已无法满足要求,并行和分布式计算是现代应用程序的主要内容,我们需要利用多个核心或多台机器来加速应用程序或大规模运行它们。在这里给大家准备了一份并发编程的秘籍,特别适合对刚入门1——5年的朋友。
话不多说来看目录:
原理篇:
指令级并行原理:
- 名词
- 鱼罐头的故事
- 指令重排序优化
- 支持流水线的处理器
- SuperScalar处理器
CPU 缓存结构原理:
- CPU缓存结构
- CPU缓存读
- CPU缓存一致性
- 内存屏障
volatile 原理:
- 如何保证可见性
- 如何保证有序性
- double-checked locking 问题
- double-checked locking 解决
final 原理:
- 设置final变量的原理
- 获取final变量的原理
Monitor原理:
synchronized 原理进阶:
- 轻量级锁
- 锁膨胀
- 自旋优化
- 偏向锁
- 锁消除
wait notify 原理:
join 原理:
AQS 原理:
- 概述
- 实现不可重入锁
- 心得
ReentrantLock 原理:
- 非公平锁实现原理
- 可重入原理
- 可打断原理
- 公平锁实现原理
- 条件变量实现原理
读写锁原理:
- 图解流程
- 源码分析
Semaphore 原理:
- 加锁解锁流程
- 源码分析
- 为什么要有PROPAGATE
ConcurrentHashMap 原理:
- JDK7 HashMap并发死链
- JDK 8 CocurrentHashMap
- JDK7 ConurrentHashMap
LinkedBlockingQueue 原理:
- 基本的入队出队
- 加锁分析
- 性能比较
ConcurrentLinkedQueue 原理:
- 模仿ConcurrentLinkedQueue
文章评论