Skip to content
On this page

AtomicInteger

java
AtomicInteger atomicInteger = new AtomicInteger();
  • 获取和赋值
java
atomicInteger.get(); //获取当前值
atomicInteger.set(999); //设置当前值
java
public static void main(String[] args) {
        AtomicInteger atomicInteger = new AtomicInteger(0); 
        // 0
        System.out.println(atomicInteger.get());

        int expectedValue = 123;
        int newValue      = 234;
        Boolean b =atomicInteger.compareAndSet(expectedValue, newValue);
        // false
        System.out.println(b);
        // 0 
        System.out.println(atomicInteger);
    }
java
public static void main(String[] args) {
        AtomicInteger atomicInteger = new AtomicInteger(123); 
        // 123
        System.out.println(atomicInteger.get());

        int expectedValue = 123;
        int newValue      = 234;
        Boolean b =atomicInteger.compareAndSet(expectedValue, newValue);
        // true
        System.out.println(b); 
        // 234
        System.out.println(atomicInteger); 

    }

由上可知该方法表示,atomicInteger的值与expectedValue相比较,如果不相等,则返回false, atomicInteger原有值保持不变;如果两者相等,则返回true,atomicInteger的值更新为newValue

getAndAdd / addAndGet decrementAndGet / getAndDecrement 的区别,如果不传值,默认为 1

java
AtomicInteger atomicInteger = new AtomicInteger(123);
System.out.println(atomicInteger.get());  //  --123

System.out.println(atomicInteger.getAndAdd(10)); //  --123 获取当前值,并加10
System.out.println(atomicInteger.get());  // --133


// add 在前
System.out.println(atomicInteger.addAndGet(10)); // --143 先加10 后获取