Java AtomicIntegerFieldUpdater 抽象类

使用示例

两个线程对 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
原文地址:https://www.cnblogs.com/feiqiangsheng/p/15262722.html