立即学习:https://edu.csdn.net/course/play/10455/233052?utm_source=blogtoedu
多线程 关键字volatile 和 内存可见性
- 多个线程操作共享数据的时候,会出现内存可见性问题
- volatile 可以保证内存数据的可见
- 相较于 synchronized 而言,是轻量级的
- volatile 不能保证 “互斥性”
- volatile 不能保证数据的原子性
原子变量: jdk1.5 后 java.util.concurrent.atomic 包下提供了常用的原子变量:
1. volatile
2. CAS(Compare - And -Swap) 算法保证数据的原子性
CAS 算法是硬件对于并发操作共享数据的支持
CAS 包含了三个操作数:
内存值 V
预估值 A
更新值 B
当且仅当 V == A 时,V = B,否则,将不做任何操作