2.|2. 原子性 Atomic
对于涉及共享变量
访问的操作,若该操作从其执行线程以外的任意线程来看是不可分割的
,那么该操作就是原子操作,称该操作具有原子性
实现原子性的两种方式:
- 使用锁(Lock)
- 利用CAS(Compare and Swap) 直接在硬件(处理器、内存)这一层次实现,又被称为“硬件锁”
基础数据类型(除double、long以外)的变量
和引用变量
的写操作
都是原子性
的【2.|2. 原子性 Atomic】Java中的double、long类型变量会占用64位(8字节)的存储空间,32位的Java虚拟机对这种变量的写操作可能会分解为两个步骤实施,比如先写低32位,后写高32位,故不能保证原子性
Java中对任何变量的读操作都是原子性的
Java语言规范特别地规定对于
volatile
关键字修饰的long/double
类型变量的写操作
是具有原子性的可以使用synchronized关键字来保证操作的原子性
原子操作 + 原子操作 != 原子操作
推荐阅读
- 第6.2章(设置属性)
- 五年后,我要成为独立自强自信的女性
- 也许,是我记性不好,也许是社会太吵,内心太躁。
- 人性的弱点-笔记
- 从战略性的角度可以配置股票
- 同学,你可知道生涯规划的重要性()
- 【38】“劳逸结合”的重要性
- 西安临潼区夏令营性价比高
- Java基础-高级特性-枚举实现状态机
- 宝贝你总是给我惊喜