悲观锁:先锁后用
每次读数据都悲观认为会被其他操作修改,应用于synchroized , ReentrantLock,因为悲观所以开销大,会阻塞其他线程
乐观锁:先用后判断
每次读数据乐观认为没有被其他操作修改,应用于java.util.concurrent.atomic,使用版本号和CAS算法实现
适用于多读的应用类型,提高吞吐量
公平锁:多个线程按申请所顺序取锁
无
非公平锁
多个线程不按申请顺序取锁,提高吞吐量
可入锁
外层使用锁后,内层仍可以使用,而且不会死锁
不可重入锁
独享锁
共享锁
互斥锁
读写锁
分段锁
偏向锁
轻量级锁
重量级锁
自旋锁