2. 原子性 Atomic

对于涉及共享变量访问的操作,若该操作从其执行线程以外的任意线程来看是不可分割的,那么该操作就是原子操作,称该操作具有原子性

实现原子性的两种方式:

  1. 使用锁(Lock)
  2. 利用CAS(Compare and Swap) 直接在硬件(处理器、内存)这一层次实现,又被称为“硬件锁”

在Java中,对基础数据类型(除double、long以外)的变量引用变量写操作都是原子性

Java中的double、long类型变量会占用64位(8字节)的存储空间,32位的Java虚拟机对这种变量的写操作可能会分解为两个步骤实施,比如先写低32位,后写高32位,故不能保证原子性

Java中对任何变量的读操作都是原子性的

Java语言规范特别地规定对于volatile关键字修饰的long/double类型变量的写操作是具有原子性的

可以使用synchronized关键字来保证操作的原子性

原子操作 + 原子操作 != 原子操作

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容