万网提供的网站建设服务的具体项目,祥云平台网站建设,o2o,wordpress查找锁的分类
可重入锁不可重入锁 可重入#xff1a;当一个线程获取某个锁后#xff0c;再次获取这个锁的时候是可以直接拿到的。不可重入#xff1a;当一个线程获取某个锁之后#xff0c;再次获取这个锁的时候拿不到#xff0c;必须等自己先释放锁再获取。synchronized…锁的分类
可重入锁不可重入锁 可重入当一个线程获取某个锁后再次获取这个锁的时候是可以直接拿到的。不可重入当一个线程获取某个锁之后再次获取这个锁的时候拿不到必须等自己先释放锁再获取。synchronized、ReentrantLock、ReentrantLockReadWriteLock都是可重入锁。 乐观锁悲观锁 乐观锁当一个获取不到锁时可以再次让CPU调度重新尝试获取锁悲观锁当一个线程获取不到资源时线程被挂起BLOCKED,WAITING状态。注意线程挂起涉及到内核态和用户态的切换比较消耗资源用户态JVM可以自行执行的指令不需要操作系统执行。内核态JVM不可以自行执行需要操作系统执行。synchronized、ReentrantLock、ReentrantLockReadWriteLock都是悲观锁而Java中的CAS操作是一种乐观锁的实现。 共享锁互斥锁 互斥锁同一时间点只能有一个线程持有互斥锁。共享锁同一时间可以允许多个线程同时持有共享锁。synchronized和ReentrantLock是互斥锁。ReentrantLockReadWriteLock在读锁时候是共享锁写锁时候是互斥锁。 公平锁非公平锁 假设A线程持有锁B线程正在等待锁这个时候C线程来了 公平锁C线程必须再B线程之后排队必须等B线程获取锁或取消排队后C线程才能尝试获取锁。非公平锁:C线程无视B的存在先尝试获取锁如果拿到锁就可以去执行业务逻辑如果没拿到还是要去B线程后排队等待B线程拿到锁才能尝试获取锁synchronized是非公平锁ReentrantLock、ReentrantLockReadWriteLock可以是公平锁也可以是非公平锁。