AtomicInteger 类常用方法介绍

2024-02-26 09:07:31 浏览数 (2)

AtomicInteger 概述

AtomicInteger 类是 Java 并发包(java.util.concurrent.atomic)中的一员。它提供了一种线程安全的方式来对整型变量进行原子操作。通过使用 AtomicInteger 类,开发者可以在多线程环境中对整型变量进行安全地增加、减少等操作,而不需要使用显式的同步机制。

常用方法

下面是 AtomicInteger 类中一些常用的方法:

  1. get():获取当前的整型值。
  2. set(int newValue):设置为指定的新值。
  3. getAndSet(int newValue):设置为指定的新值,并返回旧值。
  4. incrementAndGet():原子地将当前值加1,然后返回增加后的值。
  5. decrementAndGet():原子地将当前值减1,然后返回减少后的值。
  6. getAndIncrement():返回当前值,然后将当前值加1。
  7. getAndDecrement():返回当前值,然后将当前值减1。
  8. addAndGet(int delta):原子地将给定值与当前值相加,然后返回相加后的值。
  9. getAndAdd(int delta):返回当前值,然后将给定值与当前值相加。
  10. compareAndSet(int expect, int update):如果当前值等于预期值,则原子地将该值设置为给定的更新值。

示例代码

下面是一个示例代码,演示了 AtomicInteger 类中一些常用的方法的合集:

代码语言:javascript复制
import java.util.concurrent.atomic.AtomicInteger;

public class AtomicIntegerMethodsExample {
    public static void main(String[] args) {
        // 创建一个初始值为0的AtomicInteger对象
        AtomicInteger atomicInt = new AtomicInteger(0);

        // 1. get() 方法:获取当前的整型值
        int currentValue = atomicInt.get();
        System.out.println("Current value: "   currentValue);

        // 2. set(int newValue) 方法:设置为指定的新值
        atomicInt.set(10);
        System.out.println("New value after set: "   atomicInt.get());

        // 3. getAndSet(int newValue) 方法:设置为指定的新值,并返回旧值
        int oldAndNewValue = atomicInt.getAndSet(20);
        System.out.println("Old value: "   oldAndNewValue);
        System.out.println("Value after getAndSet: "   atomicInt.get());

        // 4. incrementAndGet() 方法:原子地将当前值加1,并返回增加后的值
        int incrementedValue = atomicInt.incrementAndGet();
        System.out.println("Incremented value: "   incrementedValue);

        // 5. decrementAndGet() 方法:原子地将当前值减1,并返回减少后的值
        int decrementedValue = atomicInt.decrementAndGet();
        System.out.println("Decremented value: "   decrementedValue);

        // 6. addAndGet(int delta) 方法:原子地将给定值与当前值相加,并返回相加后的值
        int addResult = atomicInt.addAndGet(5);
        System.out.println("Value after addAndGet: "   addResult);

        // 7. getAndAdd(int delta) 方法:返回当前值,然后将给定值与当前值相加
        int oldValue = atomicInt.getAndAdd(8);
        System.out.println("Old value before getAndAdd: "   oldValue);
        System.out.println("Value after getAndAdd: "   atomicInt.get());

        // 8. compareAndSet(int expect, int update) 方法:如果当前值等于预期值,则原子地将该值设置为给定的更新值
        boolean isSuccess = atomicInt.compareAndSet(33, 100); // 如果当前值是33,则设置为100
        System.out.println("compareAndSet result: "   isSuccess);
        System.out.println("Value after compareAndSet: "   atomicInt.get());
    }
}

结论

AtomicInteger 类提供了一种简单且高效的方式来实现对整型变量的原子操作。通过使用 AtomicInteger 类,开发者可以避免使用显式的同步机制(如 synchronized 关键字),从而提高程序的并发性能。在多线程环境中,特别是需要频繁对整型变量进行操作的情况下,建议使用 AtomicInteger 类来确保操作的线程安全性。

0 人点赞