ReentrantLock支持公平锁和非公平锁。可以在创建ReentrantLock对象时指定构造函数参数来设置锁的公平性。默认情况下,ReentrantLock是非公平锁。
时间: 2024-08-26 18:01:49 浏览: 47
第五章 ReentrantLock源码解析1--获得非公平锁与公平锁lock()1
ReentrantLock是一种高级互斥锁,它在Java并发包中提供了一种比synchronized更灵活的锁定机制。它的关键特性之一就是支持公平性和非公平性。公平锁意味着获取锁的线程按照请求锁的顺序排队,先等待的线程会优先获得;而非公平锁则不保证这种有序性,新到来的线程可能会立即抢得锁,即便前面还有线程正在等待。
当你创建ReentrantLock实例时,默认情况下它是非公平锁,即新来的请求可以立即尝试获取锁,而不必等待已经在等待的线程。如果你想让锁按请求顺序分配,你可以通过ReentrantLock的构造函数传入`true`作为公平模式,例如`new ReentrantLock(true)`,这将创建一个公平锁。
阅读全文