美文网首页
2. 原子性 Atomic

2. 原子性 Atomic

作者: TheMrBigHead | 来源:发表于2018-12-11 11:14 被阅读0次

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

    实现原子性的两种方式:

    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关键字来保证操作的原子性

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

    相关文章

      网友评论

          本文标题:2. 原子性 Atomic

          本文链接:https://www.haomeiwen.com/subject/kkxthqtx.html