在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类型)的对象引用的原子操作。