- 所有已实现的接口:
Serializable,Lock
ReentrantReadWriteLock.readLock() 返回的锁。
- 参见:
-
构造方法总结
构造方法 -
方法总结
修饰符和类型方法描述voidlock()获取读锁。void获取读锁,除非当前线程是 interrupted 。抛出UnsupportedOperationException因为ReadLocks不支持条件。toString()返回标识此锁及其锁定状态的字符串。booleantryLock()仅当调用时写锁未被另一个线程持有时才获取读锁。boolean如果写锁在给定的等待时间内没有被另一个线程持有并且当前线程还没有interrupted,则获取读锁。voidunlock()尝试释放此锁。
-
构造方法详细信息
-
ReadLock
供子类使用的构造方法。- 参数:
lock- 外锁对象- 抛出:
NullPointerException- 如果锁为空
-
-
方法详情
-
lock
public void lock()获取读锁。如果写锁未被其他线程持有,则获取读锁并立即返回。
如果写锁被另一个线程持有,则当前线程将因线程调度目的而被禁用,并处于休眠状态,直到获得读锁。
-
lockInterruptibly
获取读锁,除非当前线程是 interrupted 。如果写锁未被其他线程持有,则获取读锁并立即返回。
如果写锁被另一个线程持有,则当前线程将出于线程调度目的而被禁用并处于休眠状态,直到发生以下两种情况之一:
- 读锁由当前线程获取;或者
- 一些其他线程 中断 当前线程。
如果当前线程:
- 在进入此方法时设置其中断状态;或者
- 获取读锁时是interrupted,
InterruptedException并清除当前线程的中断状态。在此实现中,由于此方法是显式中断点,因此优先响应中断而不是正常或可重入获取锁。
- 指定者:
lockInterruptibly在接口Lock中- 抛出:
InterruptedException- 如果当前线程被中断
-
tryLock
public boolean tryLock()仅当调用时写锁未被另一个线程持有时才获取读锁。如果写锁未被另一个线程持有,则获取读锁并立即返回值
true。即使已将此锁设置为使用公平排序策略,对tryLock()will 的调用也会在可用时立即获取读锁,无论其他线程当前是否正在等待读锁。这种“闯入”行为在某些情况下可能很有用,即使它破坏了公平性。如果你想遵守这个锁的公平设置,那么使用几乎等效的tryLock(0, TimeUnit.SECONDS)(它也检测中断)。如果写锁被另一个线程持有,则此方法将立即返回值
false。 -
tryLock
如果写锁在给定的等待时间内没有被另一个线程持有并且当前线程还没有interrupted,则获取读锁。如果写锁未被另一个线程持有,则获取读锁并立即返回值
true。如果此锁已设置为使用公平排序策略,则在任何其他线程正在等待锁的情况下,将获取可用锁will not。这与tryLock()方法形成对比。如果你想要一个允许闯入公平锁的定时tryLock,那么将定时和非定时形式组合在一起:if (lock.tryLock() || lock.tryLock(timeout, unit)) { ... }如果写锁被另一个线程持有,则当前线程将因线程调度目的而被禁用并处于休眠状态,直到发生以下三种情况之一:
- 读锁由当前线程获取;或者
- 一些其他线程中断当前线程;或者
- 指定的等待时间已过。
如果获得读锁,则返回值
true。如果当前线程:
- 在进入此方法时设置其中断状态;或者
- 获取读锁时是interrupted,
InterruptedException并清除当前线程的中断状态。如果指定的等待时间过去,则返回值
false。如果时间小于或等于零,则该方法根本不会等待。在此实现中,由于此方法是一个显式中断点,因此优先响应中断而不是正常或重入获取锁,并优先报告等待时间的流逝。
- 指定者:
tryLock在接口Lock中- 参数:
timeout- 等待读锁的时间unit- 超时参数的时间单位- 返回:
true如果获得读锁- 抛出:
InterruptedException- 如果当前线程被中断NullPointerException- 如果时间单位为空
-
unlock
public void unlock()尝试释放此锁。如果读者数量现在为零,则锁定可用于写锁定尝试。如果当前线程不持有此锁,则抛出
IllegalMonitorStateException。- 指定者:
unlock在接口Lock中- 抛出:
IllegalMonitorStateException- 如果当前线程没有持有这个锁
-
newCondition
抛出UnsupportedOperationException因为ReadLocks不支持条件。- 指定者:
newCondition在接口Lock中- 返回:
-
此
Lock实例的新Condition实例 - 抛出:
UnsupportedOperationException- 总是
-
toString
返回标识此锁及其锁定状态的字符串。括号中的状态包括字符串"Read locks =",后跟持有的读取锁的数量。
-