reentrantlock默认什么锁
时间: 2023-05-01 13:05:12 浏览: 209
ReentrantLock是一种可重入锁,指同一个线程可以多次获得该锁而不会被阻塞,也可以释放多次锁而不会出现异常。它是Java中的一种实现,可以实现线程间共享资源的同步控制。与synchronized相比,ReentrantLock具有可中断锁获取、公平锁、锁超时等功能。
相关问题
ReentrantLock支持公平锁和非公平锁。可以在创建ReentrantLock对象时指定构造函数参数来设置锁的公平性。默认情况下,ReentrantLock是非公平锁。
ReentrantLock是一种高级互斥锁,它在Java并发包中提供了一种比synchronized更灵活的锁定机制。它的关键特性之一就是支持公平性和非公平性。公平锁意味着获取锁的线程按照请求锁的顺序排队,先等待的线程会优先获得;而非公平锁则不保证这种有序性,新到来的线程可能会立即抢得锁,即便前面还有线程正在等待。
当你创建ReentrantLock实例时,默认情况下它是非公平锁,即新来的请求可以立即尝试获取锁,而不必等待已经在等待的线程。如果你想让锁按请求顺序分配,你可以通过ReentrantLock的构造函数传入`true`作为公平模式,例如`new ReentrantLock(true)`,这将创建一个公平锁。
ReentrantLock支持公平锁吗
ReentrantLock是Java中的一个锁实现类,它支持公平锁和非公平锁两种模式。公平锁是指多个线程按照申请锁的顺序来获取锁,而非公平锁则允许线程插队获取锁。在ReentrantLock中,默认情况下是非公平锁。
在使用ReentrantLock时,可以通过构造函数来指定是否使用公平锁。如果使用公平锁,可以将fair参数设置为true;如果使用非公平锁,则将fair参数设置为false或者不传入该参数,默认为非公平锁。
使用公平锁可以保证线程获取锁的顺序与线程申请锁的顺序一致,避免了饥饿现象,但是会带来一定的性能损失。而非公平锁则可能导致某些线程一直无法获取到锁,但是相对于公平锁来说,性能更高。
阅读全文