AtomicReference 原子引用

简介: 1.简介 赋值操作不是线程安全的。若想不用锁来实现,可以用AtomicReference<V>这个类,实现对象引用的原子更新。 使用场景:一个线程使用student对象,另一个线程负责定时读表,更新这个对象。那么就可以用AtomicReference这个类。 java.util.concurrent.atomic.AtomicReference<V> 类的名

1.简介

赋值操作不是线程安全的。若想不用锁来实现,可以用AtomicReference<V>这个类,实现对象引用的原子更新。

使用场景:一个线程使用student对象,另一个线程负责定时读表,更新这个对象。那么就可以用AtomicReference这个类。

java.util.concurrent.atomic. AtomicReference<V>
类的名字。

2.常用方法

java.util.concurrent.atomic.AtomicReference. AtomicReference(V initialValue)
构造函数。
V java.util.concurrent.atomic.AtomicReference. get()
返回当前的引用。
boolean java.util.concurrent.atomic.AtomicReference. compareAndSet(V expect, V update)

如果当前值与给定的expect相等,(注意是引用相等而不是equals()相等),更新为指定的update值。

V java.util.concurrent.atomic.AtomicReference.getAndSet(V newValue)

原子地设为给定值并返回旧值。

void java.util.concurrent.atomic.AtomicReference.set(V newValue)

注意此方法不是原子的。不明白为什么要提供这个方法,很容易误用。

目录
相关文章
|
11月前
|
安全 程序员 编译器
C++ 引用本质
C++ 引用本质
51 0
|
30天前
|
缓存 Java 编译器
volatile 变量提供什么保证?
【8月更文挑战第21天】
11 0
|
12月前
常量引用的概念
常量引用的概念
33 0
|
缓存 安全 Java
volatile底层的实现原理:volatile关键字的作用、内存模型、JMM规范和CPU指令
volatile底层的实现原理:volatile关键字的作用、内存模型、JMM规范和CPU指令
145 0
深入理解JUC:第三章:AtomicReference原子引用
深入理解JUC:第三章:AtomicReference原子引用
166 0
深入理解JUC:第三章:AtomicReference原子引用
|
缓存 安全 Java
《JUC并发编程 - 高级篇》05 -共享模型之无锁 (CAS | 原子整数 | 原子引用 | 原子数组 | 字段更新器 | 原子累加器 | Unsafe类 )
《JUC并发编程 - 高级篇》05 -共享模型之无锁 (CAS | 原子整数 | 原子引用 | 原子数组 | 字段更新器 | 原子累加器 | Unsafe类 )
《JUC并发编程 - 高级篇》05 -共享模型之无锁 (CAS | 原子整数 | 原子引用 | 原子数组 | 字段更新器 | 原子累加器 | Unsafe类 )
《JUC并发编程 - 高级篇》05 -共享模型之无锁 (CAS | 原子整数 | 原子引用 | 原子数组 | 字段更新器 | 原子累加器 | Unsafe类 )(二)
《JUC并发编程 - 高级篇》05 -共享模型之无锁 (CAS | 原子整数 | 原子引用 | 原子数组 | 字段更新器 | 原子累加器 | Unsafe类 )
《JUC并发编程 - 高级篇》05 -共享模型之无锁 (CAS | 原子整数 | 原子引用 | 原子数组 | 字段更新器 | 原子累加器 | Unsafe类 )(二)
|
存储 缓存 安全
《JUC并发编程 - 高级篇》05 -共享模型之无锁 (CAS | 原子整数 | 原子引用 | 原子数组 | 字段更新器 | 原子累加器 | Unsafe类 )(三)
《JUC并发编程 - 高级篇》05 -共享模型之无锁 (CAS | 原子整数 | 原子引用 | 原子数组 | 字段更新器 | 原子累加器 | Unsafe类 )
《JUC并发编程 - 高级篇》05 -共享模型之无锁 (CAS | 原子整数 | 原子引用 | 原子数组 | 字段更新器 | 原子累加器 | Unsafe类 )(三)
|
存储 缓存 编译器