原子操作
一种用法简单、性能高效、线程安全的更新变量的方式,包括原子更新基本类型、原子更新数组、原子更新引用、原子更新字段,采用Unsafe实现的包装类;
原子更新基本类型
包括AtomicBoolean、AtomicInteger、AtomicLong,方法包括addAndGet、compareAndSet、getAndIncrement、getAndSet;
实现:采用CAS,调用UnSafe包实现,目前Unsafe只提供了3个方法,所以基本类型只有3个,其他实现原理一样;
原子更新数组
包括AtomicIntegerArray、AtomicLongArray、AtomicReferenceArray,方法包括addAndGet、compareAndSet;
创建时采用构造方法传入普通数组,Atomic 会复制一份修改;
原子更新引用
包括AtomicReference、AtomicReferenceFieldUpdater、AtomicMarkableReference;
创建时采用构造方法传入普通对象,再调用原子方法修改;
原子更新字段
包括AtomicIntegerFieldUpdater、AtomicLongFieldUpdater、AtomicStampedReference(更新有版本号的引用,解决CAS的ABA问题);
构造时需要使用构造器指定字段名称,其中字段必须是volatile;
网友评论