📜  Java并发-AtomicLong类(1)

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

Java并发-AtomicLong类介绍

简介

AtomicLong是Java并发包提供的一种可用于多线程环境下的原子操作类,用于对long类型的变量进行原子操作。它提供了一系列的原子操作方法,可以保证在多线程环境下对变量的操作是线程安全的。

使用方法
创建一个AtomicLong对象
AtomicLong atomicLong = new AtomicLong();

可以通过无参数的构造函数来创建一个初始值为0的AtomicLong对象。

原子操作方法

AtomicLong提供了一系列的原子操作方法,包括:

  • addAndGet(long delta):以原子方式将给定值与当前值相加,返回相加后的结果。
  • getAndAdd(long delta):以原子方式将给定值与当前值相加,返回相加前的结果。
  • incrementAndGet():以原子方式将当前值加1,返回增加后的结果。
  • getAndIncrement():以原子方式将当前值加1,返回增加前的结果。
  • decrementAndGet():以原子方式将当前值减1,返回减少后的结果。
  • getAndDecrement():以原子方式将当前值减1,返回减少前的结果。
  • getAndSet(long newValue):以原子方式设置为给定值,并返回设置前的值。
示例
import java.util.concurrent.atomic.AtomicLong;

public class AtomicLongExample {
    public static void main(String[] args) {
        AtomicLong atomicLong = new AtomicLong(10);

        long result = atomicLong.addAndGet(5); // 返回15,当前值为15
        System.out.println(result);

        result = atomicLong.getAndAdd(5); // 返回15,当前值为20
        System.out.println(result);

        result = atomicLong.incrementAndGet(); // 返回21,当前值为21
        System.out.println(result);

        result = atomicLong.getAndIncrement(); // 返回21,当前值为22
        System.out.println(result);

        result = atomicLong.decrementAndGet(); // 返回21,当前值为21
        System.out.println(result);

        result = atomicLong.getAndDecrement(); // 返回21,当前值为20
        System.out.println(result);

        result = atomicLong.getAndSet(25); // 返回20,当前值为25
        System.out.println(result);
    }
}

以上示例展示了AtomicLong的一些常用操作方法的使用方式,通过这些操作方法,可以在多线程环境下保证对long类型变量的安全操作。

线程安全性

AtomicLong的操作方法都是以原子方式进行的,因此可以在多线程环境下保证线程安全。它通过使用CAS(Compare and Swap)方式来保证原子性操作。

总结

AtomicLong类是Java并发包中用于对long类型的变量进行原子操作的类。它提供了一系列的原子操作方法,能够确保多线程环境下对long类型变量的安全操作。使用AtomicLong可以简化线程之间的同步问题,提高并发性能。