# 前言

现在你看到的并发标签是我第二次重制版,第一次的并发系列文章比较散乱,当时也是处于初学阶段,心态不够沉稳,很多东西看不清晰就写了博客,所以这次打算好好改一下。

个人观点:Java 并发需要分为两个部分学习,一部分为操作系统级别的并发知识,另一部分才是 j.u.c 包。考虑到整个体系的知识量过于庞大,所以本系列前几篇长篇文章,都会用于简述第一部分的内容,概述操作系统的并发和 Java 为了并发而做出的努力,如内存模型,类设计,并发关键字等。然后剩下的文章才是对 j.u.c 包中各个类的应用解释,该部分我们会阅读大量源码,有些类我们会着重讲解,像 AQS 这样的重点,还会分上下来讲解,当然,有些我们也会讲得很快,比如 ConcurrentHashMap ,就不必停留在实现细节上,而是了解它的实现逻辑上即可。

# 第一部分

第一部分重点是讲解操作系统底层并发实现的机制以及 Java 的一些基本并发机制。

# 操作系统篇

本部分主要讲解一个操作系统为了满足并发而做出的努力,如何设计一个锁,从自旋到主动释放 CPU 资源,是如何逐步优化的以及解决一些经典的并发问题。本系列主要参考《操作系统导论》的并发主题,本书已经有中文翻译版,如果不喜欢阅读实体书, github 上也有对应的中文 pdf:

https://github.com/remzi-arpacidusseau/ostep-translations/tree/master/chinese

实在看不进去,你也可以看我的博客,总之,你需要花时间。

# Java 并发机制篇

该部分不会过多涉及 j.u.c 包下面的类,而是会着重讲一下 Java 中的线程,并发关键字, JMM ,Java 中的锁, ThreadLocal 等重要知识。

该部分主要参考了《Java 并发编程的艺术》,Java 全栈知识体系等。