Java 提供的并发组件,大致可以分为两类:
- 从预防阶段下手,防止错误发生,比如说 synchronized 关键字
- 一旦发生错误能及时重试,比如说 CAS
对于线程数量比较多的并发场景,采用预防的措施会比较合理,这样大部分线程就不会因为小概率时间的 CAS 重试浪费掉大量的 CPU 周期;在线程数量小的时候,CAS 的意义就比较大,因为预防措施带来的线程切换要比 CAS 等待的开销更大。
想要学好 Java 并发编程,就必须得对下图中提到的基础概念进行充分的理解。
在我看来,并发编程主要是用来解决这两个痛点的:
- 多个线程对同一变量造成的不一致问题;
- 为提高性能,计算机的很多执行单元都配备了缓存,那势必会影响并发编程的数据一致性。
需要提醒一点的是,多线程并发虽然是用来解决性能问题的,但并不意味着所有情况下都需要开启多线程,有时候反而会适得其反,那如果不是特别要求,尽量不要过早开启多线程。对于新手小白想更轻松的学好Java提升,Java架构,web开发、大数据,数据分析,人工智能等技术,这里给大家分享系统教学资源,扩列下我尉(同英):1253431195【教程/工具/方法/解疑】
并发编程是 Java 体系当中相对难掌握的一块知识点,比较考验一名程序员的内功,其实并发编程最早的应用领域就是操作系统的实现。
如