使用示例
两个线程对 test 对象的 num 变量,分别进行加和减操作。
import java.util.concurrent.atomic.AtomicIntegerFieldUpdater;
public class Test {
public volatile int num;
private AtomicIntegerFieldUpdater<Test> updater = AtomicIntegerFieldUpdater
.newUpdater(Test.class, "num");
public static void main(String[] args) throws Exception{
Test test = new Test();
Thread thread1 = new Thread(new Runnable() {
@Override
public void run() {
for (int i = 0; i < 100000; i++) {
test.updater.incrementAndGet(test);
}
}
});
Thread thread2 = new Thread(new Runnable() {
@Override
public void run() {
for (int i = 0; i < 100000; i++) {
test.updater.decrementAndGet(test);
}
}
});
thread1.start();
thread2.start();
Thread.sleep(10 * 1000);
System.out.println("查看num的值,num=" + test.num);
}
}
结果:
查看num的值,num=0