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

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

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

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

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

相关推荐
程序员小八7773 分钟前
上海百度B端java后端日常实习一面
java·开发语言
mldong1 小时前
零依赖的秘密:8 大 SPI 设计
java·架构
Diligently_3 小时前
Anolis 系统更新与密码设置&磁盘扩容
java·后端·spring
mqiqe3 小时前
线程调度与 Schedulers:Project Reactor 并发模型的核心引擎
java·开发语言·网络
我命由我123454 小时前
Android 开发问题:unexpected element <service> found in <manifest>
android·java·java-ee·android studio·android jetpack·android-studio·android runtime
正在走向自律4 小时前
飞算JavaAI能搞定充电站故障处置吗?
java·ai编程·java开发·飞算javaai·java代码生成·ai coding模型·springboo
用户40966601317514 小时前
Guava 不止有 Lists 和 Maps:Cache、EventBus、Multimap 实战
java·后端
一只叫煤球的猫4 小时前
从 Java 21 到 Java 25:ThreadLocal 以外的选择—— ScopedValue
java·后端·架构
步行cgn5 小时前
MyBatis 多对一关联映射详解
java