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

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

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

在多线程编程中,经常需要对一些共享的数据进行操作。而这些操作经常会碰到多个线程同时访问的问题,即线程安全问题。Java中提供了许多原子操作类来解决多线程并发访问的问题,其中就包括了 AtomicLong 类。

AtomicLong 类提供了多个原子操作方法,其中就包括了 getAndSet() 方法。本文将为您详细讲解该方法及其示例。

AtomicLong getAndSet() 方法介绍

getAndSet() 方法的作用是设置新的值并返回旧的值,在设置新值之前,先获取原值,然后将新值设置进去,最后返回旧的值。该方法属于原子操作,能够保证多个线程对同一个 AtomicLong 实例进行并发操作时,不会出现线程安全问题。

getAndSet() 方法的方法签名如下:

public final long getAndSet(long newValue)
AtomicLong getAndSet() 方法示例

下面的示例展示了如何使用 getAndSet() 方法对 AtomicLong 实例进行操作:

import java.util.concurrent.atomic.AtomicLong;

public class AtomicLongDemo {
    private static AtomicLong atomicLong = new AtomicLong(10);

    public static void main(String[] args) {
        System.out.println("原始值:" + atomicLong.get());
        long oldValue = atomicLong.getAndSet(20);
        System.out.println("新值:" + atomicLong.get());
        System.out.println("旧值:" + oldValue);
    }
}

输出结果为:

原始值:10
新值:20
旧值:10

在上面的示例中,首先创建了一个 AtomicLong 实例,初始值为10。然后通过 atomicLong.getAndSet(20) 方法将 AtomicLong 实例的值设置为20,并返回设置前的旧值10。最后再输出新的 AtomicLong 实例的值和旧值。

总结

getAndSet() 方法是 AtomicLong 类提供的一个原子操作方法,能够保证多个线程对同一个 AtomicLong 实例进行操作时的线程安全。使用示例代码中的方式,可以轻松地使用该方法。