首页 > 编程笔记 > Java笔记 阅读:5

什么是原子类,Java原子类有什么用?(附带实例)

原子类在 Java 在并发编程领域扮演了一个非常重要的角色,它们是构建在原子操作上的一组类,主要位于 java.util.concurrent.atomic 包中。

原子操作是那些在执行过程中不会被线程调度机制中断的操作,一个原子操作一旦开始,就会一直运行到结束,中间不会被其他线程干扰。

原子类提供了一种机制,便于在没有使用 synchronized 关键字的情况下实现线程安全,即使在多线程环境中,使用原子类也能保证数据的完整性和准确性。该机制是通过使用底层 CPU 的原子性指令集来实现的,它允许在单个操作中无锁地读取、修改和写入变量。

我们通过一个简单的示例来对比一下使用原子类和使用 synchronized 关键字的不同。使用 synchronized 关键字的实现代码如下:
public class SynchronizedCounter {
    private int count = 0;
    public synchronized void increment() {
        count++; // 这个操作现在是线程安全的
    }
    public synchronized int getCount() {
        return count;
    }
}
在上述代码中,我们使用了 synchronized 关键字来保证 increment() 方法在同一时刻只能被一个线程访问,从而保证线程安全。

如果我们使用原子类实现该功能,可以选择 AtomicInteger,实现代码如下:
import java.util.concurrent.atomic.AtomicInteger;
public class AtomicCounter {
    private final AtomicInteger count = new AtomicInteger(0);
    public void increment() {
        count.incrementAndGet(); // 这个操作现在是线程安全的
    }
    public int getCount() {
        return count.get();
    }
}

通过两种实现方式的对比,我们会发现使用原子类有以下优点:
原子类通常是实现线程安全的单变量并发访问的首选方法,尤其是当性能和可伸缩性是关键时。原子类的主要作用有以下几点:
JUC 包含一系列的原子类,具体类型如下:
在高并发情况下,使用这些原子类对共享变量进行操作,可以让程序变得更为安全和高效。

相关文章