Skip to content

解读:并发编程知识体系

这节课我给大家解读下并发编程的知识体系。

知识体系结构

image-20201118233605750

如图:这块知识可以分成4个维度去看,最上面的维度是解决方案。就是哪些场景可以用到并发编程,具体用什么手段去处理?比如说发红包怎么处理、抢购怎么处理、内存索引怎么处理、大量数据统计怎么处理?

下面一层是工具:想要出具解决方案,除了要了解自己遇到的问题,还需要学解决方案之下的一个个工具。Java提供了多种锁、同步器、并发数据结构,以及基于ExecutorService的轻量级计算框架。

再往下是Java底层能力:在解决问题的时候,我们要知道应该用那种工具,用那种能力?为了弄清,不同的场景需要用什么能力,我们就要深入这些工具的原理。深入原理,就免不了再往下了解这些工具具体是怎么实现的。这样就需要学习CAS/AQS/Lock/Condition这些——这些底层能力我们通常不会直接用到,而是去用Java提供的数据结构,比如BlockingQueu,TaskForkPool等。

在下面是真正的**底层,**可以和操作系统知识对应上,比如:context-switch什么时候发生,atomic如何实现,死锁和饥饿何时发生。

并发编程的知识图谱

大家经常会问我:

  • 并发编程学到什么程度?
  • 如果没处理过高并发能不能进大厂?

我觉得对于一名优秀的程序员,并发领域你应该是没有知识死角到。做到这一点,即便你没有做过高并发的场景,当你面对面试官,聊起并发的场景,依然可以和面试官说的头头是道。这样面试官就不用太纠结于你是否有实际的高并发经验,一样可以因为你对知识本身的了解程度录用你。 这也是我教学的目标。

根据上面的4层,我帮助大家整理了一份知识图谱。

image-20201118234403705

这是我根据我多年经验和咨询了一些专家,整理的一份知识图谱。这里面我用不同颜色区分开知识的内容,把并发编程部分分成下面几个部分:

  • (红色部分的)解决方案层面知识,也是对并发编程的整体认知
  • (紫色部分的)JVM底层知识
  • (橘黄色部分的)操作系统部分的底层知识
  • (绿色和蓝色部分的)工具、框架、应用类知识

大家加油!~

珍惜时间!

文章来源于自己总结和网络转载,内容如有任何问题,请大佬斧正!联系我