1. Atomic
java.util.concurrent包提供了 Atomic原子类型及其操作,保证了原子性。无锁的方式实现了线程安全,其主要利用了CAS:Compare and Set。
1.1 常见类
AtomicInteger、AtomicLong ….
1.2 AtomicInteger常见用法
- 增加值并返回新值:
int addAndGet(int delta)
- 加1后返回新值:
int incrementAndGet()
- 获取当前值:
int get()
- 用CAS方式设置:
int compareAndSet(int expect, int update)
1.3 应用场景
多线程下计数器、累加器。
class IdGenerator {
AtomicLong num = new AtomicLong(0);
public static long getNextId() {
return num.incrementAndGet();
}
}