java防止并发的几种方法
2018\7\19
使用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为最新值