原子更新引用类型

文章基于jdk1.7,通过学习《Java并发编程的艺术》,对Java原子操作的理解

原子更新引用类型包含3个类:

  • AtomicReference:原子更新引用类型
  • AtomicReferenceFieldUpdater:原子更新引用类型里的字段
  • AtomicMarkableReference:原子更新带有标记位的引用类型。可以原子更新一个布尔类型的标记位和引用类型。构造方法是 AtomicMarkableReference(V inittialRef,boolean initialMark)。

AtomicReference示例:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
import java.util.concurrent.atomic.AtomicReference;

/**
* @author: xbq
* @date: 2018/10/7 16:56
* @description:
*/
public class AtomicReferenceTest {

public static AtomicReference<User> atomicUserRef = new AtomicReference<User>();

public static void main(String[] args) {
User initUser = new User();
initUser.setName("张山");
initUser.setOld(20);

atomicUserRef.set(initUser);

atomicUserRef.compareAndSet(initUser, new User("王五" ,21));

System.out.println(atomicUserRef.get().getName());
System.out.println(atomicUserRef.get().getOld());
}

/**
* 用户实体
*/
static class User {
private String name;
private int old;

public User() {}

public User(String name, int old) {
this.name = name;
this.old = old;
}

// 省略 get set
}
}

运行结果如下:

1
2
name:王五
old:21

欢迎关注我的公众号~ 搜索公众号: 翻身码农把歌唱 或者 扫描下方二维码:

坚持原创技术分享,您的支持将鼓励我继续创作!
-------------本文结束感谢您的阅读-------------
分享到:
0%