Java 原子操作类(atomic包)
专栏原创出处: github-源笔记文件 , github-源码 ,欢迎 Star,转载请附上原文出处链接和本声明。 原子操作类说明 当程序更新一个变量时,如果是多线程同时更新这个变量,可能得到的结果与期望值不同。我们可以用 并发关键字-volatile 、 并发关键字-synchronized 、 Lock 来解决并发读写问题。 但是从性能及语义上可能存在以下问题: volatile 不能保证组合操作的原子性(比如自增操作) synchronized 和 Lock 比较重量级 从 java1.5 开始,jdk 提供了 java.util.concurrent.atomic 包,这个包中的原子操作类,提供了一种用法简单,性能高效,线程安全的更新一个变量的方式。 atomic 包里提供原子更新类型分别是:原子更新基本类型,原子更新数组,原子更新引用,原子更新属性,这些类都是使用 Unsafe 实现的包装类。 目前 jdk1.8 , Atomic 开头的原子类,提供的方法、处理逻辑基本一致。差异部分表现在非数值类型的原子类支持自增自减操作。 jdk1.8 中新增了高性能原子类,参考《高性能原子类》一节介绍。 原子更新基本类型 Atomic 包提供了以下 3 个类: AtomicBoolean:原子更新布尔类型。 AtomicInteger:原子更新整型。 AtomicLong