各种Java中锁

悲观锁:先锁后用

每次读数据都悲观认为会被其他操作修改,应用于synchroized , ReentrantLock,因为悲观所以开销大,会阻塞其他线程

乐观锁:先用后判断

每次读数据乐观认为没有被其他操作修改,应用于java.util.concurrent.atomic,使用版本号和CAS算法实现

适用于多读的应用类型,提高吞吐量

公平锁:多个线程按申请所顺序取锁

非公平锁

多个线程不按申请顺序取锁,提高吞吐量

可入锁

外层使用锁后,内层仍可以使用,而且不会死锁

不可重入锁

独享锁

共享锁

互斥锁

读写锁

分段锁

偏向锁

轻量级锁

重量级锁

自旋锁