原子变量常见的使用场景

简介: 原子变量常见的使用场景

原子变量提供的如incrementAndGet()、compareAndSet()等方法保证了操作的原子性,可以避免使用锁,从而减少线程之间的竞争和上下文切换,提高性能。
import java.util.concurrent.atomic.AtomicInteger;
public class AtomicIntegerExample {
public static void main(String[] args) {
AtomicInteger atomicInteger = new AtomicInteger(0);
// 以原子方式将当前值更新为新值
atomicInteger.set(20);
// 使用静态工具方法进行原子操作
int oldValue = atomicInteger.getAndAdd(5); // 将当前值增加5,并返回旧值
int newValue = atomicInteger.addAndGet(10); // 将当前值增加10,并返回新值
oldValue = atomicInteger.getAndIncrement(); // 将当前值增加1,并返回旧值
newValue = atomicInteger.incrementAndGet(); // 将当前值增加1,并返回新值
oldValue = atomicInteger.getAndSet(20); // 将当前值设置为20,并返回旧值
}
}

原子变量常见的使用场景:
1.计数器:在多线程环境中,如果你需要一个计数器来跟踪事件发生的次数,可以使用AtomicInteger或AtomicLong。
public class Counter {
private final AtomicInteger count = new AtomicInteger(0);

public void increment() {
    count.incrementAndGet();
}

public int getCount() {
    return count.get();
}

}

目录
相关文章
|
7月前
|
算法 程序员 C语言
C/C++原子操作与atomic CAS底层实现原理
假定有两个操作A 和B,如果从执行A 的线程来看,当另一个线程执行B 时,要么将B 全部执行完,要么完全不执行B,那么A 和B 对彼此来说是原子的。
573 1
C/C++原子操作与atomic CAS底层实现原理
|
7月前
|
存储 Kubernetes NoSQL
无锁队列实现及使用场景
无锁队列实现及使用场景
|
4月前
|
安全 Java 调度
解锁Java并发编程高阶技能:深入剖析无锁CAS机制、揭秘魔法类Unsafe、精通原子包Atomic,打造高效并发应用
【8月更文挑战第4天】在Java并发编程中,无锁编程以高性能和低延迟应对高并发挑战。核心在于无锁CAS(Compare-And-Swap)机制,它基于硬件支持,确保原子性更新;Unsafe类提供底层内存操作,实现CAS;原子包java.util.concurrent.atomic封装了CAS操作,简化并发编程。通过`AtomicInteger`示例,展现了线程安全的自增操作,突显了这些技术在构建高效并发程序中的关键作用。
77 1
|
1月前
三种线程的使用场景
三种创建多线程的使用场景 1、继承的方式:适合于这个任务只想被一个线程的对象执行的情况 2、实现Runnable接口方式:适合于一个任务想被多个线程执行的情况 3、实现Callable接口方式:也适合一个任务想被多个线程执行的情况,你还想得倒任务的执行结果
27 0
|
6月前
|
缓存 安全 Java
原子操作的实现原理
原子操作的实现原理
104 0
|
7月前
|
安全 Java 测试技术
解密Java并发中的秘密武器:LongAdder与Atomic类型
解密Java并发中的秘密武器:LongAdder与Atomic类型
365 1
|
5月前
|
安全 Oracle Java
(四)深入理解Java并发编程之无锁CAS机制、魔法类Unsafe、原子包Atomic
其实在我们上一篇文章阐述Java并发编程中synchronized关键字原理的时候我们曾多次谈到过CAS这个概念,那么它究竟是什么?
128 1
|
缓存 安全 Java
并发编程-04线程安全性之原子性Atomic包的4种类型详解
并发编程-04线程安全性之原子性Atomic包的4种类型详解
63 0
|
存储 缓存 安全
volatile特性及实现原理
一个volatile变量自身具有以下三个特性: 1、可见性:即当一个线程修改了声明为volatile变量的值,新值对于其他要读该变量的线程来说是立即可见的。而普通变量是不能做到这一点的,普通变量的值在线程间传递需要通过主内存来完成。 2、有序性:volatile变量的所谓有序性也就是被声明为volatile的变量的临界区代码的执行是有顺序的,即禁止指令重排序。
95 0
|
安全 Java 对象存储
《多线程下ThreadLocal使用场景实例》
《多线程下ThreadLocal使用场景实例》
《多线程下ThreadLocal使用场景实例》

热门文章

最新文章