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

📅  最后修改于: 2023-12-03 15:31:50.006000             🧑  作者: Mango

Java中的 AtomicLong updateAndGet() 方法及示例

介绍

Java中的AtomicLong类提供了一种线程安全的、无锁的方式来更新long类型的值。其中,updateAndGet() 方法是用来更新该类实例中的值,并返回更新后的值。该方法是一个原子性操作,可以保证在多线程的情况下只有一个线程能够进行更新操作,从而保证线程安全。

语法
public final long updateAndGet(LongUnaryOperator updateFunction)

该方法接收一个用于更新值的LongUnaryOperator接口实现作为参数。该接口实现应该定义将原值作为参数,返回一个新值的函数。该方法会首先获取当前AtomicLong实例中的值,然后使用传入的函数更新该值,最后返回更新后的值。

示例

下面的示例展示了如何使用AtomicLong的updateAndGet()方法:

import java.util.concurrent.atomic.AtomicLong;

public class AtomicLongExample {

    public static void main(String[] args) {

        // 创建AtomicLong实例
        AtomicLong counter = new AtomicLong(0);

        // 定义更新函数
        LongUnaryOperator updateFunction = x -> x + 1;

        // 使用updateAndGet()方法更新值
        long updatedValue = counter.updateAndGet(updateFunction);

        // 输出更新后的值
        System.out.println("更新后的值为:" + updatedValue);

    }
}

该程序创建了一个初始值为0的AtomicLong实例。然后定义了一个更新函数,该函数将原值加1,并使用该函数调用了updateAndGet()方法。最后输出了更新后的值。由于该程序只有一个线程,因此只进行了一次更新操作。

总结

AtomicLong类提供了一种线程安全的方式来更新long类型的值。其中,updateAndGet()方法是用于更新该类实例中的值,并返回更新后的值。在多线程的情况下,该方法可以保证原子性操作,从而避免了线程安全问题。