面试题答案
一键面试关键步骤
- 创建
AtomicInteger
实例。 - 调用
AtomicInteger
的incrementAndGet
等原子操作方法进行计数。
原理
AtomicInteger
利用处理器的CAS(Compare and Swap)指令实现非阻塞操作。CAS操作包含三个操作数:内存位置、预期原值、新值。当且仅当内存位置的值与预期原值相匹配时,处理器才会自动将该位置值更新为新值,否则不会执行任何操作。通过这种方式,AtomicInteger
可以在多线程环境下实现无锁的原子操作,避免了传统锁机制带来的阻塞和性能开销。
核心代码片段
import java.util.concurrent.atomic.AtomicInteger;
public class NonBlockingCounter {
private AtomicInteger counter = new AtomicInteger(0);
public int increment() {
return counter.incrementAndGet();
}
public int getCount() {
return counter.get();
}
}
使用示例:
public class Main {
public static void main(String[] args) {
NonBlockingCounter counter = new NonBlockingCounter();
System.out.println(counter.increment());
System.out.println(counter.getCount());
}
}