《Java并发编程的艺术》第七章 Java中的13个原子操作类

第七章 Java 中的 13 个原子操作类

7.1 原子更新基本类型

Atomic 包提供了3中基本类:

  • AtomicBoolean
  • AtomicInteger
  • AtomicLong

这三个类的方法几乎一样,这里以 AtomicInteger 为例。AtomicInteger 的常用方法如下:

  • int addAndGet(int delta)
    • 以原子方式相加原值与传入值,返回结果
  • boolean compareAndSet(int expect, int update)
    • 如果输入值等于预期值,则以原子方式设置该值
  • int getAndIncrement()
    • 原子方式自增,返回旧值
  • void lazySet(int newValue)
    • 延迟设置值,可能导致其他线程在一小段时间内还是读到旧值
  • int getAndSet(int newValue)
    • 以原子方式设置为 newValue,返回旧值

AtomicBoolean 是把 Boolean转换为 整型,再使用 compareAndSwapInt 进行CAS。

7.2 原子更新数组

Atomic 包提供了以下 4 个类:

  • AtomicIntegerArray
    • 原子更新整型数组里的元素
  • AtomicLongArray
    • 原子更新长整型数组里的元素
  • AtomicReferenceArray
    • 原子更新引用类型数组里的元素

以 AtomicIntegerArray 为例,常用方法有:

  • int addAndGet(int i,int delta)
  • boolean compareAndSet(int i,int expect,int update)

7.3 原子更新应用类型

Atomic 包提供了以下 3 个类:

  • AtomicReference
    • 原子更新引用类型
  • AtomicReferenceFieldUpdater
    • 原子更新引用类型里的字段
  • AtomicMarkableReference
    • 原子更新带有标记位的应用类型

7.4 原子更新字段类

Atomic 包提供了以下 3 个类:

  • AtomicIntegerFieldUpdater
    • 原子更新整型的字段-更新器
  • AtomicLongFieldUpdater
    • 原子更新长整型字段的更新器
  • AtomicStampedReference
    • 原子更新带版本号的应用类型
文章作者: koral
文章链接: http://luokaiii.github.io/2019/06/08/读书笔记/《Java并发编程的艺术》/7.Java中的13个原子操作类/
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自