如果让我从头再来学习并发编程

大学时,我学习了一本国外的教科书,书名叫做《计算机网络------自顶向下方法》,这本书改变了我看待学习的角度。学习的顺序不是一成不变的,常规的路线通常从底层学习,这本书从应用层面入手,逐步讲解到底层,以一种对常规学习路线相反的方向学习,在我看来恰恰学习计算机网络最轻松上手的路径。很多时候我们追求一步到位,鞭辟入里的理解,反而忽略对于初学者,最佳的学习路线往往是兴趣与试错、感性和求索交织的,认识是逐渐深刻的。

知之者往往陷入知识的诅咒,知道的内容很难遗忘,甚至忘记了自己也是从不理解到懂的。有些书籍和文章对于初学者来说是不友好的,它们往往默认你掌握了很多前置知识。如果让我重头学习并发编程,我希望有类似自顶向下的学习路线。

以下是我总结的学习路线,感兴趣的朋友可以参考:

一、基础(并发与并行,性能与瓶颈,SIMD,MISD,进程、线程模型,虚拟线程,生命周期,上下文切换的开销有多大,跳过同步器、JMM等底层内容)

二、常用的并发模式

  1. 单线程(单线程实现简单且高效,很多多线程问题可以使用单线程解决)
  2. ThreadLocal/ScopedValue/TTL
  3. 消息队列(生产者消费者模式)
  4. 结构化并发(任务编排、资源安全管理、可观测性、快速失败思想)
  5. 函数式解决方案(纯函数、不可变对象、CopyOnWrite)
  6. 执行器与线程池(分离任务与执行的思想、资源管理与生命周期、多种执行器的特点(缓存执行器、固定线程执行器、线性执行器、直接执行器)、舱壁模式)
  7. 异步编程:CompletableFuture/ListenableFuture(函数式思想、回调地狱、任务编排/拆分、取消传播)
  8. 调度器(ScheduledExecutorService(常常被忽略却很有用),资源管理与调度算法)
  9. 延迟计算与记忆化,缓存与SingleFlight模式
  10. ForkJoin框架,并行流,分治思想
  11. EventLoop

三、并发集合类,使用与陷阱,阻塞队列

四、原子操作与原子类

五、锁(临界区、锁接口设计、锁的特点、可重入锁、读写锁、等待队列、条件队列,原生隐式同步锁,选择/构造线程安全的数据结构)

六、同步器和相关类(信号量、mutex、几种栅栏)

七、活性问题:死锁、饥饿、活锁,如何避免

八、性能优化、测试、监控、debug

九、底层实现原理(可见性、原子性、有序性)JMM,volatile实现(可见性窗口技巧),竞争条件,happens-before,DCL,VarHandler

相关推荐
SunnyDays10113 分钟前
Java 读写 Excel 公式:从基础到高级的实战总结
java·开发语言·excel
wb043072015 分钟前
Java 26
java·开发语言
白露与泡影8 分钟前
JVM GC调优实战:从线上频繁Full GC到RT降低80%的全过程
java·开发语言·jvm
范什么特西10 分钟前
Spring 动态代理 静态代理
java·后端·spring
醇氧11 分钟前
Spring 动态注册 Bean 深度解析:从源码到实践
java·后端·spring
笨拙的老猴子1 小时前
[特殊字符] Java GC机制详解:G1、ZGC、Shenandoah全面解析与版本演进对比
java·开发语言
砍材农夫1 小时前
物联网 基于netty构建mqtt协议规范(遗嘱与保留消息)
java·开发语言·物联网·netty
DFT计算杂谈1 小时前
KPROJ编译教程
java·前端·python·算法·conda
重生之我是Java开发战士2 小时前
【笔试强训】Week5:空调遥控, kotor和气球,走迷宫,主持人调度II,体操队形,二叉树的最大路径和,排序子序列,消减整数
java·算法·动态规划
郑重其事,鹏程万里2 小时前
表达式计算器(mvel2)
java