Java SDK 并发包里提供的原子类内容很丰富,我们可以将它们分为五个类别:原子化的基本数据类型、原子化的对象引用类型、原子化数组、原子化对象属性更新器和原子化的累加器。这五个类别提供的方法基本上是相似的,并且每个类别都有若干原子类,你可以通过下面的原子类组成概览图来获得一个全局的印象。
1. 原子化的基本数据类型
相关实现有 AtomicBoolean、AtomicInteger 和 AtomicLong,提供的方法主要有以下这些
1 getAndIncrement() // 原子化 i++ 2 getAndDecrement() // 原子化的 i-- 3 incrementAndGet() // 原子化的 ++i 4 decrementAndGet() // 原子化的 --i 5 //当前值+=delta,返回 += 前的值 6 getAndAdd(delta) 7 //当前值 +=delta,返回 += 后的值 8 addAndGet(delta) 9 //CAS操作,返回是否成功 10 compareAndSet(expect, update) 11 //以下四个⽅法 12 //新值可以通过传 func 函数来计算 13 getAndUpdate(func) 14 updateAndGet(func) 15 getAndAccumulate(x,func) 16 accumulateAndGet(x,func)