在Java中,原子类(Atomic Classes) 是位于java.util.concurrent.atomic
包中的一组类,这些类提供了一些原子操作,用于在多线程环境下进行安全的并发编程。原子类利用了底层的硬件支持,确保操作的原子性和线程安全性,而不需要使用传统的同步机制(如synchronized关键字或显式锁)。
AtomicInteger
以下是一个简单的示例,演示如何使用AtomicInteger类:
import java.util.concurrent.atomic.AtomicInteger;
public class AtomicExample {
private static AtomicInteger atomicInteger = new AtomicInteger(0);
public static void main(String[] args) {
Thread thread1 = new Thread(() -> {
for (int i = 0; i < 1000; i++) {
atomicInteger.incrementAndGet();
}
});
Thread thread2 = new Thread(() -> {
for (int i = 0; i < 1000; i++) {
atomicInteger.incrementAndGet();
}
});
thread1.start();
thread2.start();
try {
thread1.join();// main线程阻塞,等待thread1完成
thread2.join();// main线程阻塞,等待thread2完成
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println("Final value: " + atomicInteger.get());
}
}
AtomicLong
类似AtomicInteger只不过1~7返回与参数为long类型。
AtomicBoolean
AtomicReference
AtomicStampedReference
提供带有“标记”位的对象引用的原子操作,用于解决ABA问题。
AtomicMarkableReference
提供带有“标记”位(boolean类型)的对象引用的原子操作。