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

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

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

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

一、基础(并发与并行,性能与瓶颈,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

相关推荐
金銀銅鐵6 分钟前
[Java] 用 GUI 展示 ArrayList 扩容的过程
java·后端·ai编程
磊 子8 分钟前
什么是虚假唤醒(spurious wakeup)?从 POSIX 标准讲到 futex 内核
java·开发语言
飘然生19 分钟前
traceId链路 skywalking java agent
java·开发语言·skywalking
IT研究室26 分钟前
最新计算机毕业设计选题推荐-基于spring boot的母婴全程服务管理系统-网站-文档指导-Java-springboot
java·spring boot·课程设计
CRMEB34 分钟前
商品 SKU 设计,从简单规格到多规格踩过什么
java·前端·数据库·开源
霸道流氓气质35 分钟前
基于 Spring @Profile 的 MQ 消费者按需开关设计
java·后端·spring
silvamux_1 小时前
4款新模型商务邮件翻译横评:0.98到0.46
android·java·javascript
Dovis(誓平步青云)1 小时前
车辆进入隧道后信号断开,座舱旅程怎样补回事件
java·开发语言·前端·数据库·电脑
砚底藏山河1 小时前
数据新鲜度 SLA 监控
java·大数据·python·maven
杨杨杨大侠10 小时前
都能接模型、RAG 和 MCP,Java Agent 框架到底差在哪?
java