View Javadoc
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  }