📅  最后修改于: 2023-12-03 14:43:00.885000             🧑  作者: Mango
AtomicLong
是Java并发包提供的一种可用于多线程环境下的原子操作类,用于对long类型的变量进行原子操作。它提供了一系列的原子操作方法,可以保证在多线程环境下对变量的操作是线程安全的。
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
可以简化线程之间的同步问题,提高并发性能。