重入锁、读写锁、悲观锁和乐观锁、CAS无锁、自旋锁、AQS。
轻量级(Lock手动开启与释放,比较灵活)与重量级(synchronized自动开启与释放) 可重入性(递归锁)
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};
CAS锁与乐观锁性质一样,及比较在交换或比较在更新