锁:互斥锁 悲观锁 同步锁 重量级锁(线程阻塞,上下文切换,操作系统线程调度用户态内核态)
一、AtomicInteger 性能高于二
AtomicInteger atomicInteger= new AtomicInteger();
atomicInteger.incrementAndGet();
二、synchronized
public void increase(){
synchronized(this){
num++;
}
}
三、CAS(无锁,自旋锁,乐观锁,自旋锁、轻量级锁、 compareAndSet /compareAndSwap)
while(true){
int oldValue = atomic.get();
int newValue = oldValue+1;
if(atomic.compareAndSet(oldValue.newVlaue){
break;
}
}
重量级:占用资源多 性能低
轻量级:占用资源少 性能高
1、原子性问题:底层:lock compxchgq 缓存行锁/总线锁
2、ABA问题:volatile version 1-2-1
3、轻量级锁不一定比重量级锁性能高吗?
4、偏向锁不会主动释放。
5、LongAdder 分段CAS优化 性能高于AtomnicInteger 防止空转自旋