📌  相关文章
📜  Java中的 AtomicInteger accumAndGet() 方法及示例(1)

📅  最后修改于: 2023-12-03 14:42:43.814000             🧑  作者: Mango

Java中的 AtomicInteger accumAndGet() 方法及示例

在Java中,AtomicInteger是一种支持原子操作的整型类。它提供了原子递增和递减、原子加减等操作。其中,accumAndGet()方法是一种原子加法操作,它将给定的值添加到当前值中,并返回新值。

方法签名
public final int accumAndGet(int delta)

参数说明:

  • delta:要添加的值。

返回值说明:

  • 新的累加结果。
示例
import java.util.concurrent.atomic.AtomicInteger;

public class AtomicIntegerExample {
    static AtomicInteger atomicInteger = new AtomicInteger(0);

    public static void main(String[] args) throws InterruptedException {
        Thread t1 = new Thread(() -> {
            for (int i = 0; i < 10; i++) {
                int result = atomicInteger.accumAndGet(2);
                System.out.println(Thread.currentThread().getName() + ": " + result);
            }
        });

        Thread t2 = new Thread(() -> {
            for (int i = 0; i < 10; i++) {
                int result = atomicInteger.accumAndGet(3);
                System.out.println(Thread.currentThread().getName() + ": " + result);
            }
        });

        t1.start();
        t2.start();
        t1.join();
        t2.join();
        System.out.println("Final result: " + atomicInteger.get());
    }
}

运行结果如下:

Thread-0: 2
Thread-0: 4
Thread-0: 6
Thread-0: 8
Thread-0: 10
Thread-0: 12
Thread-0: 14
Thread-0: 16
Thread-0: 18
Thread-0: 20
Thread-1: 23
Thread-1: 26
Thread-1: 29
Thread-1: 32
Thread-1: 35
Thread-1: 38
Thread-1: 41
Thread-1: 44
Thread-1: 47
Thread-1: 50
Final result: 50

在这个示例中,我们创建了两个线程t1和t2,它们分别使用accumAndGet()方法对AtomicInteger对象进行加法操作。具体来说,线程t1将累加值设置为2,线程t2将累加值设置为3。每个线程都执行10次累加操作。

运行结果表明,即使在多个线程同时执行的情况下,AtomicInteger对象仍然能够正确处理累加操作,并返回最终的累加结果。最终累加结果为50,符合预期的结果(10次累加操作,每次累加2或3)。