本文共 1092 字,大约阅读时间需要 3 分钟。
-- Start
java.util.concurrent.atomic 包中提供了以下原子类, 它们是线程安全的类, 但是它们并不是通过同步和锁来实现的, 原子变量的操作会变为平台提供的用于并发访问的硬件原语.
引入这些类的主要原因是为了实现一种所谓的无锁定且无等待算法. 如: 比较并交换 (CAS), 它的原理是比较当前值与期望值, 如果相同则表示该变量没有发生变化. 如下面的例子使用同步和CAS方式来实现一个ID生成器.
class IDGenerator { private int id; public IDGenerator() { } public synchronized int nextInt() { return ++id; }}
class IDGenerator { private final AtomicInteger id = new AtomicInteger(0); public IDGenerator() { } public int nextInt() { while (true) { int oldID = id.get(); int newID = oldID + 1; if (id.compareAndSet(oldID, newID)) return newID; } }}--- 更多参见: -- 声 明:转载请注明出处 -- Last Updated on 2012-07-16 -- Written by ShangBo on 2012-07-16 -- End