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

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

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

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

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

相关推荐
开心码农1号22 分钟前
Java rabbitMQ如何发送、消费消息、全套可靠方案
java·rabbitmq·java-rabbitmq
蜡台31 分钟前
JetBrains IDEA 安装 卸载相关总结
java·ide·intellij-idea·注册码
WJLSH12332 分钟前
TomCat
java·tomcat
戮戮1 小时前
Spring Cloud Gateway 零拷贝参数校验:一种高性能网关架构实践
java·网络·架构·gateway
qqxhb1 小时前
26|Agent 设计模式:ReAct、Plan-and-Solve 与反射
设计模式·react模式·plan-and-solve·reflection模式
alengan1 小时前
cocos自动编译-Android自动出apk包
java·eclipse
漫霂1 小时前
二叉树的统一迭代遍历
java·算法
文静小土豆1 小时前
K8s 滚动更新在 Java 应用中的实践与优化
java·容器·kubernetes
HSunR1 小时前
java springboot3 后端 基础框架
java·开发语言
七夜zippoe2 小时前
Java技术未来展望:GraalVM、Quarkus、Helidon等新趋势探讨
java·开发语言·python·quarkus·graaivm·helidon