前言
在Java中使用多线程是提高程序并发响应能力的重要手段,但同时它也是一把双刃剑;如果使用不当也很容易导致程序出错,并且还很难直观地找到问题。这是因为:1)、线程运行本身是由操作系统调度,具有一定的随机性;2)、Java共享内存模型在多线程环境下很容易产生线程安全问题;3)、不合理的封装依赖,极容易导致发布对象的不经意逸出。
所以,要用好多线程这把剑,就需要对Java内存模型、线程安全问题有较深的认识。但由于Java丰富的生态,在实际研发工作中,需要我们自己进行并发处理的场景大都被各类框架或组件给屏蔽了。这也是造成很多Java开发人员对并发编程意识淡薄的主要原因。
那如何才能学习好并发编程呢?
基于上述痛点,小编今天也是把当初自己学习并发编程时,阿里师兄抄送的内部手册分享给大家。这份资料中的【并发】一词涵盖了在Java平台上的进程、线程、并发、并行,以及Java 并发工具、并发问题以及解决方案,同时也会讲解一些其它领域的并发。
并发编程原理
- 指令并行原理
- CPU缓存结构原理
- volatile原理
- final原理
- synchronized原理
- synchronized原理进阶
-
........
并发编程模式
- 同步模式之保护性暂停
- 同步模式之Balking
- 异步模式之生产者/消费者
- 异步模式之工作线程
- 线程安全单例
-
......
并发编程应用
- 效率
- 限制
- 互斥
- 同步和异步
- 缓存
-
......
Java并发编程图册
- 「Java并发编程实战」该书籍是值得返回看的,第⼀遍不需要精度,主要是为了建⽴⼀个并发的思想,和关键术语的⼤致记忆,先阅读第 16 章也是极好的,理解 JMM 是实践并发编程的基础
- 「码出⾼效」可直接阅读第七章「并发与多线程」,这个章节更好的将技术问题联系到了⽣活实际,有了「并发编程实战」的铺底,相信,看这个章节会更有感觉
- 「Java并发编程之美」这本书从第 5 章开始,就会有源码分析,有前辈带领读源码,轻松多了,这回让你更加了解本质,同时也会找到 JUC 升级的主线
-
「Java 并发编程的艺术」这本书会满⾜你从各个⻆度看待并发编程问题
总结
当初我刚开始学习 Java 并发编程的时候,试图上来就看Java SDK的并发包,但是很快就放弃了。原因是我觉得东西太多,眼花缭乱的,虽然借助网络上的技术文章,感觉都看懂了,但是很快就又忘了。
根本原因就是因为并发知识没有成体系,所以今天推荐这份资料给大家,希望可以帮助大家快速建立解决并发问题的思路,梳理并发编程的知识,加深认识。