原子更新基本类型
一个生动的例子
public class AtomicIntegerExample {
private static AtomicInteger atomicInteger = new AtomicInteger(1);
public static void main(String[] args) {
System.out.println(atomicInteger.getAndIncrement());
System.out.println(atomicInteger.get());
}
}
1
2
3
4
5
6
7
8
9
原子更新数组
一个生动的例子
public class AtomicIntegerArrayExample {
static int[] value = new int[] { 1, 2 };
static AtomicIntegerArray ai = new AtomicIntegerArray(value);
public static void main(String[] args) {
System.out.println(ai.getAndSet(0, 3));
System.out.println(ai.get(0));
System.out.println(value[0]);
}
}
1
2
3
4
5
6
7
8
9
10
11
12
数组value是通过构造函数传递进去,然后AtomicIntegerArray 会将当前数组复制一份
原子更新引用类型
一个生动的例子
public class AtomicReferenceExample {
public static void main(String[] args) {
User user = new User("conan", 15);
AtomicReference<User> atomicReference = new AtomicReference<User>();
atomicReference.set(user);
User updateUser = new User("Shinichi", 17);
atomicReference.compareAndSet(user, updateUser);
System.out.println(atomicReference.get().getName());
System.out.println(user.getName());
}
static class User {
private String name;
private int old;
public User(String name, int old) {
this.name = name;
this.old = old;
}
public String getName() {
return name;
}
public int getOld() {
return old;
}
}
}
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
原子更新字段类
一个生动的例子
public class AtomicIntegerFieldUpdaterExample {
public static void main(String[] args) {
AtomicIntegerFieldUpdater<User> a = AtomicIntegerFieldUpdater.newUpdater(User.class, "old");
User conan = new User("conan", 10);
System.out.println(a.getAndIncrement(conan));
System.out.println(a.get(conan));
System.out.println(conan.getOld());
}
static class User {
private String name;
public volatile int old;
public User(String name, int old) {
this.name = name;
this.old = old;
}
public String getName() {
return name;
}
public int getOld() {
return old;
}
}
}
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
更新类的字段必须使用public volatile修饰符。
---------------------
转载,仅作分享,侵删
作者:EagleLi1
原文:https://blog.csdn.net/qq_21687635/article/details/84673641
|
|