重入锁、读写锁、悲观锁和乐观锁、CAS无锁、自旋锁、AQS。算法
轻量级(Lock手动开启与释放,比较灵活)与重量级(synchronized自动开启与释放) 可重入性(递归锁)spa
CAS算法的过程是这样:它包含三个参数CAS(V,E,N): V表示要更新的变量,E表示预期值,N表示新值。仅当V值等于E值时,才会将V的值设为N,若是V值和E值不一样,则说明已经有其余线程作了更新,则当前线程什么都不作。最后,CAS返回当前V的真实值。线程
乐观锁:递归
update table set x=x+1, version=version+1 where id=#{id} and version=#{version};io
CAS锁与乐观锁性质同样,及比较在交换或比较在更新table