Java多线程系列总纲

终于,开始着手写Java多线程系列了。 Java多线程系列 写起来不会很容易,一来:照本宣科是没有必要的,二来,完全脱离书本性知识又是 "空中楼阁"。

在我的计划中,每一篇文章:

  • 都从 基础知识 开始入手,整理 必知必会 的内容,这些内容也是面试的常客;
  • 在此基础上,结合自身多年的工作经验,挑选、设计案例进行一定地展开,对于基础还不够牢的读者而言,可以在练手中理解书本内容;对于我以及诸位老司机,可以借机反思一下;
  • 整理新收获,或者在某些点上深挖一下,尝试突破

总纲

本篇作为系列的总纲,将发散性的谈一谈Java多线程的内容要点,系列文章将依次展开。

谈到多线程,绕不开的基本概念:操作系统中的 进程线程 以及 JVM线程和操作系统线程的关系。在这个过程中,将涉及到:JVM内存模型JVM方法执行过程 的知识;

*作者按:此处将产生一篇文章:Java基础--图解JVM内存模型和JVM线程模型 *

继而,我们又需要理解 临界资源临界区 的概念,并且接触到 内存屏障CASAQS 的知识;

作者按:这部分基础知识,我将专门汇总一篇 Java多线程系列--基础知识手册,其内容未必能完全详尽,每一块的内容将会在对应篇章中进行展开。锁的知识十分重要,将独立一篇文章:Java多线程系列--掌控面试,一文吃透锁

作者按:一文吃透锁太难了,拆分二至三篇文章 "一文吃透Synchronized锁" 、 "一文吃透AQS","一文吃透Lock锁",2022-03-19

谈及一个事物,绕不开其生命周期、管理、作用关系;对于线程也是如此。

作者按:此处将产生两篇文章:Java多线程基础--线程生命周期与线程协作详解 ; Java多线程基础--线程的创建与线程池管理

至此,我们发现,在多线程协作中,获取在异步的基础上获取结果非常的麻烦,庆幸的是,我们拥有Future这一利器;

作者按:此处将产生一篇文章 Java多线程系列--掌握Future,轻松获取异步任务结果

人总是贪心的,当我们想到可以异步去利用机器性能时,自然会考虑利用并发去充分利用机器性能,但 "左右互搏之术" 很难驾驭,一不小心就会走火入魔,写出bug。 如果一个大型任务可以很方便的被拆分成各种小任务并最终合并得到结果,参考阿姆达尔定律 (Amdahl's Law),则可以充分利用计算资源。

作者按:此处将产生一篇文章 Java多线程系列--Fork&Join框架,分治的艺术

岁月静好,但Future也有缺陷,我们需要优雅、优雅、优雅地实现异步,驾驭异步。

作者按:此处将产生一篇文章 Java多线程系列--掌握CompletableFuture,驾驭异步编程

至此,武功已经练成,但工欲善其事必先利其器,我们需要还有各类工具帮助我们写好多线程代码。

作者按:此处将产生一篇文章 Java多线程系列--并发工具JUC

至此,我们将至少产生9篇文章,但多线程的知识远不止这么多,创作过程中可能会进行增加,完成情况可以参考下面,喜欢在其他平台阅读的可跳转到掘金或CSDN

完成情况: