forked from zaiyunduan123/Java-Summarize
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathAtomicReferenceDemo.java
More file actions
53 lines (33 loc) · 1.21 KB
/
AtomicReferenceDemo.java
File metadata and controls
53 lines (33 loc) · 1.21 KB
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
42
43
44
45
46
47
48
49
50
51
52
package concurrent.atomic;
import java.util.concurrent.atomic.AtomicIntegerFieldUpdater;
import java.util.concurrent.atomic.AtomicReference;
public class AtomicReferenceDemo {
private static AtomicReference<User> reference = new AtomicReference<>();
private static AtomicIntegerFieldUpdater updater = AtomicIntegerFieldUpdater.newUpdater(User.class, "age");
public static void main(String[] args) {
User user1 = new User("a", 1);
reference.set(user1);
User user2 = new User("b", 2);
User user = reference.getAndSet(user2);
System.out.println(user);
System.out.println(reference.get());
int oldValue = updater.getAndAdd(user1, 5);
System.out.println(oldValue);
System.out.println(updater.get(user1));
}
static class User {
private String userName;
public volatile int age;
public User(String userName, int age) {
this.userName = userName;
this.age = age;
}
@Override
public String toString() {
return "User{" +
"userName='" + userName + '\'' +
", age=" + age +
'}';
}
}
}