atomicinteger
时间: 2025-06-05 08:26:19 浏览: 18
### AtomicInteger 的线程安全用法示例
`AtomicInteger` 是 Java 提供的一个用于多线程环境下的原子操作类[^1]。它通过无锁机制(基于 CAS,Compare-And-Swap)来保证线程安全,而无需显式使用 `synchronized` 关键字。以下是关于 `AtomicInteger` 的基本用法和一个线程安全的示例。
#### 基本用法
`AtomicInteger` 提供了多种原子操作方法,例如 `getAndIncrement()`、`incrementAndGet()`、`compareAndSet()` 等。这些方法确保在多线程环境下对共享变量的操作是线程安全的。
以下是一个简单的例子,展示如何使用 `AtomicInteger` 来生成唯一的序列号:
```java
import java.util.concurrent.atomic.AtomicInteger;
public class Sequencer {
private final AtomicInteger sequenceNumber = new AtomicInteger(0);
public int next() {
return sequenceNumber.getAndIncrement(); // 原子性地获取并递增
}
public static void main(String[] args) {
Sequencer sequencer = new Sequencer();
System.out.println(sequencer.next()); // 输出 0
System.out.println(sequencer.next()); // 输出 1
System.out.println(sequencer.next()); // 输出 2
}
}
```
在这个例子中,`getAndIncrement()` 方法以原子方式返回当前值并将其递增[^2]。
#### 多线程环境下的线程安全示例
为了演示 `AtomicInteger` 在多线程环境下的线程安全性,可以参考以下代码:
```java
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.atomic.AtomicInteger;
public class AtomicIntegerExample {
private final AtomicInteger counter = new AtomicInteger(0);
public void incrementCounter() {
counter.incrementAndGet(); // 原子性地递增计数器
}
public int getCounterValue() {
return counter.get(); // 获取当前值
}
public static void main(String[] args) throws InterruptedException {
AtomicIntegerExample example = new AtomicIntegerExample();
ExecutorService executor = Executors.newFixedThreadPool(10);
for (int i = 0; i < 1000; i++) {
executor.submit(example::incrementCounter);
}
executor.shutdown();
executor.awaitTermination(1, TimeUnit.MINUTES);
System.out.println("Final Counter Value: " + example.getCounterValue());
}
}
```
在这个例子中,多个线程同时调用 `incrementCounter()` 方法来递增共享的 `AtomicInteger` 变量。由于 `incrementAndGet()` 方法是原子操作,因此即使在高并发环境下,最终的结果也始终是正确的[^4]。
#### 注意事项
尽管 `AtomicInteger` 提供了线程安全的操作,但需要注意的是,仅当操作完全依赖于单个 `AtomicInteger` 实例时,才能保证线程安全。如果需要组合多个操作或与其他非原子变量交互,则可能需要额外的同步机制[^3]。
---
###
阅读全文
相关推荐

















