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

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

Java中的 AtomicInteger incrementAndGet() 方法及示例介绍

AtomicInteger类介绍

Java中的AtomicInteger是一个提供原子操作的类,可以在多线程环境下保证操作的原子性,避免出现并发问题。它继承自Number类,可以支持比较、读写方法等操作。

AtomicInteger类提供了许多方法,其中incrementAndGet() 是用来增加值并返回新值的原子操作方法。下面将介绍incrementAndGet() 的语法、参数、返回值和使用方法。

语法

public final int incrementAndGet()

参数

该方法没有参数。

返回值

返回类型为int,表示增加后的值。

示例

下面是一个使用incrementAndGet() 方法的示例代码:

import java.util.concurrent.atomic.AtomicInteger;

public class AtomicIntegerExample {

    public static void main(String[] args) {

        // 创建一个AtomicInteger对象,初始值为0
        AtomicInteger counter = new AtomicInteger(0);

        // 多线程操作,模拟并发情况
        for (int i = 0; i < 10; i++) {
            new Thread(new Runnable() {
                @Override
                public void run() {
                    int value = counter.incrementAndGet();
                    System.out.println(Thread.currentThread().getName() + ", value: " + value);
                }
            }).start();
        }
    }
}

代码说明:

  1. 创建一个AtomicInteger对象,初始值为0。
  2. 创建10个线程,每个线程执行Runnable接口的run() 方法,其中调用incrementAndGet() 方法获取并打印新值。因为incrementAndGet() 方法是原子操作,多个线程同时调用不会产生数据竞争,最终输出的结果也符合预期。
  3. 示例输出如下:
Thread-0, value: 1
Thread-3, value: 4
Thread-1, value: 2
Thread-8, value: 9
Thread-6, value: 7
Thread-9, value: 10
Thread-2, value: 3
Thread-7, value: 8
Thread-4, value: 5
Thread-5, value: 6
总结

使用AtomicInteger的incrementAndGet() 方法可以避免多线程操作的数据竞争问题,能够保证操作的原子性,是编写高并发程序时不可或缺的一种工具。