java防止并发的几种方法
使用synchronized关键字3种使用方法:
修饰类方法,作用于当前实例加锁,进入方法要获取当前实例的锁
修饰静态方法,作用于当前实例加锁,进入方法要获取当前实例的锁
修饰代码块,指定加锁对象,给指定对象加锁,进入代码块要先获取指定对象的锁(synchronized参数要传入固定的对象才能起到作用)
使用原子操作:
java 在 SDK atomic包下的提供了原子操作的类,常用的有
AtomicBoolean
AtomicInteger
AtomicIntegerArray
AtomicIntegerFieldUpdater
AtomicLong
AtomicLongArray
AtomicLongfieldUpdater
AtomicMarkableReference
AtomicReference
AtomicReference
AtomicReferenceArray
AtomicReferenceFieldUpdater
AtomicStampedReference
DoubleAccumulator
DoubleAdder
LongAccumulator
LongAdder
Striped64
其中atomicboolean atomicinteger atomicreperence常用的方法及含义
get() 获取当前值
set()设置当前值
getAndSet(V newValue) 获取当前值并设置最新的值
compareAndSer(V expect,V update)如果expect与当前值相同就设置update为最新值