1 package npe;
2
3 import java.util.concurrent.atomic.AtomicIntegerFieldUpdater;
4 import java.util.concurrent.atomic.AtomicLongFieldUpdater;
5 import java.util.concurrent.atomic.AtomicReferenceFieldUpdater;
6
7 public class AtomicFieldUpdater {
8
9 volatile Object x;
10 volatile int y;
11 volatile long z;
12
13 AtomicReferenceFieldUpdater<AtomicFieldUpdater , Object> updaterX
14 = AtomicReferenceFieldUpdater.newUpdater(AtomicFieldUpdater.class, Object.class, "x");
15
16 AtomicIntegerFieldUpdater<AtomicFieldUpdater> updaterY
17 = AtomicIntegerFieldUpdater.newUpdater(AtomicFieldUpdater.class, "y");
18
19 AtomicLongFieldUpdater<AtomicFieldUpdater> updaterZ
20 = AtomicLongFieldUpdater.newUpdater(AtomicFieldUpdater.class, "z");
21
22 int f() {
23 return x.hashCode();
24 }
25
26 void setX(Object foo) {
27 updaterX.set(this, foo);
28 }
29 void setY(int foo) {
30 updaterY.set(this, foo);
31 }
32
33 void setZ(long foo) {
34 updaterZ.set(this, foo);
35 }
36
37 }