# 前言
现在你看到的并发标签是我第二次重制版,第一次的并发系列文章比较散乱,当时也是处于初学阶段,心态不够沉稳,很多东西看不清晰就写了博客,所以这次打算好好改一下。
个人观点: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 全栈知识体系等。