原子类的使用场景
原子类属于JUC。
原子类由CAS操作保证原子性,由volatile关键字保证可见性。
原子类自jdk 1.5开始出现,位于java.util.concurrent.atomic包下面。jdk 1.8又新增了4个性能更好的原子类。
volatile解决多线程内存不可见问题对于一写多读,是可以解决变量同步问题,但是如果多写,同样无法解决线程安全问题。 如果是count++操作,使用如下类实现: AtomicInteger count = new AtomicInteger(); count.addAndGet(1); 如果是JDK8,推荐使用LongAdder对象,比AtomicLong性能更好(减少乐观锁的重试次数)。
原子类类型
基本类型
-
AtomicBoolean
-
AtomicInteger
-
AtomicLong
引用类型
-
AtomicReference
-
AtomicStampedReference
-
AtomicReferenceFieldUpdater
-
AtomicMarkableReference
数组类型
-
AtomicIntegerArray
-
AtomicLongArray
-
AtomicReferenceArray
字段类型
-
AtomicIntegerFieldUpdater
-
AtomicLongFieldUpdater
-
AtomicSt