并发编程导论
01 | 导读
1)很多人因为某个地方存在盲点,忽略了一些细节,导致无法写出正确高效的并发程序。
2)很多人急于学习 Java 并发编程技术,却忽略了技术背后的理论和模型,而理论和模型却往往比具体的技术更为重要。
3)并发编程并不是 Java 特有的语言特性,它是一个通用且早已成熟的领域,Java 只是根据自身情况做了实现。
02 | 并发编程可以总结为三个核心问题:分工、同步、互斥
1)分工:指的是如何高效地拆解任务并分配给线程
2)同步:指的是线程之间如何协作
3)互斥:则是保证同一时刻只允许一个线程访问共享资源
4)小结:这三个核心问题是跨语言的,学习其他语言的并发编程类库同样适用。
03 | Java SDK并发包简析
1、Java SDK 并发包乃是并发大师 Doug Lea 出品,堪称经典,它内部一定是有章可循的,是按照分工、同步、互斥三个维度组织的。
2、例子:Fork/Join 框架就是一种分工模式,CountDownLatch 就是一种典型的同步方式,而可重入锁则是一种互斥手段
3、小结:Java SDK并发包,是针对并发问题开发出来的工具。
04 | 并发图书推荐
1、《Java并发编程实战》 必读
2、《Java并发编程的艺术》主要讲解并发内部实现原理
3、《图解Java多线程设计模式》主要讲解并编程设计模式
4、《操作系统:精髓与设计原理》主要讲解操作系统
5、http://ifeve.com 国内专业并发编程网站
05 | 思维导图
1、并发编程导论思维导图
参考文献:
[1]王宝令. Java并发编程实战[M]. 极客时间, 2019.