java中什么是公平锁?什么是非公平锁?什么是可重入锁?
时间: 2023-11-14 18:04:42 浏览: 79
Java源码解析之可重入锁ReentrantLock
在Java中,公平锁是指多个线程按照申请锁的顺序来获取锁,即先申请锁的线程先获取锁,后申请的线程后获取锁。而非公平锁是指多个线程获取锁的顺序是不确定的,有可能后申请的线程先获取锁,这种情况下可能会导致线程饥饿。
可重入锁是指同一个线程可以重复获取同一把锁,而不会出现死锁的情况。在Java中,synchronized关键字和ReentrantLock类都是可重入锁。当一个线程已经获得了某个对象的锁,再次请求该对象锁时,如果该锁是可重入的,则请求成功,否则将会阻塞等待自己释放该对象的锁。可重入锁避免了死锁的情况,提高了代码的灵活性和可维护性。
阅读全文