public static class ReentrantReadWriteLock.ReadLock
extends Object implements Lock, Serializable
| java.lang.Object | |
| java.util.concurrent.locks.ReentrantReadWriteLock.ReadLock | |
由方法 readLock()返回的锁。
Protected constructors |
|
|---|---|
ReentrantReadWriteLock.ReadLock(ReentrantReadWriteLock lock) 构造函数由子类使用。 |
|
公共方法(Public methods) |
|
|---|---|
void |
lock() 获取读锁。 |
void |
lockInterruptibly() 获取读取锁定,除非当前线程为 interrupted 。 |
Condition |
newCondition() 抛出 |
String |
toString() 返回标识此锁定的字符串以及其锁定状态。 |
boolean |
tryLock() 只有在调用时写入锁未被另一个线程持有的情况下才会获取读取锁。 |
boolean |
tryLock(long timeout, TimeUnit unit) 如果写锁在给定的等待时间内没有被另一个线程持有,并且当前线程还没有被 interrupted获取,则获取读锁。 |
void |
unlock() 试图释放此锁。 |
继承方法(Inherited methods) |
|
|---|---|
java.lang.Object
|
|
java.util.concurrent.locks.Lock
|
|
ReentrantReadWriteLock.ReadLock (ReentrantReadWriteLock lock)
构造函数由子类使用。
| 参数(Parameters) | |
|---|---|
lock |
ReentrantReadWriteLock: the outer lock object |
| 抛出异常(Throws) | |
|---|---|
NullPointerException |
if the lock is null |
void lock ()
获取读锁。
如果写入锁不是由另一个线程保存并立即返回,则获取读取锁。
如果写入锁由另一个线程保存,则当前线程因为线程调度目的而被禁用,并且处于休眠状态,直到获取读取锁。
void lockInterruptibly ()
获取读取锁定,除非当前线程为 interrupted 。
如果写入锁不是由另一个线程保存并立即返回,则获取读取锁。
如果写锁定由另一个线程保存,则当前线程因为线程调度目的而被禁用,并且处于休眠状态,直到发生以下两件事之一:
如果当前线程:
InterruptedException is thrown and the current thread's interrupted status is cleared.
在这个实现中,由于这个方法是一个明确的中断点,因此优先考虑响应正常或重入锁的中断。
| 抛出异常(Throws) | |
|---|---|
InterruptedException |
if the current thread is interrupted |
Condition newCondition ()
抛出 UnsupportedOperationException因为 ReadLocks不支持条件。
| 返回(Returns) | |
|---|---|
Condition |
A new Condition instance for this Lock instance |
| 抛出异常(Throws) | |
|---|---|
UnsupportedOperationException |
always |
String toString ()
返回标识此锁定的字符串以及其锁定状态。 括号中的状态包括字符串"Read locks ="后面跟着持有读取锁的数量。
| 返回(Returns) | |
|---|---|
String |
a string identifying this lock, as well as its lock state |
boolean tryLock ()
只有在调用时写入锁未被另一个线程持有的情况下才会获取读取锁。
如果写入锁定未被另一个线程true ,则立即获取读取锁定,并立即返回值true 。 即使这个锁被设置为使用公平的订购策略,对tryLock()的调用也会立即获取读锁,如果它可用的话,无论其他线程当前是否正在等待读锁。 这种“bar”“行为在某些情况下可能会有用,即使它违背公平。 如果您想要遵守此锁的公平性设置,请使用tryLock(0, TimeUnit.SECONDS) ,它几乎相同(它也会检测到中断)。
如果写入锁由另一个线程保存,则此方法将立即返回值 false 。
| 返回(Returns) | |
|---|---|
boolean |
true if the read lock was acquired |
boolean tryLock (long timeout,
TimeUnit unit)
如果写锁在给定的等待时间内没有被另一个线程持有,并且当前线程尚未被 interrupted获取,则获取读锁。
如果写入锁定未被另一个线程true ,则立即获取读取锁定,并立即返回值true 。 如果此锁已设置为使用公平的订购策略,那么如果有其他线程正在等待锁, 则不会获取可用的锁。 这与tryLock()方法相反。 如果你想要一个允许公平锁定的定时tryLock ,那么将定时和tryLock表格组合在一起:
if (lock.tryLock() ||
lock.tryLock(timeout, unit)) {
...
}
如果写入锁由另一个线程保存,则当前线程因为线程调度目的而被禁用,并且处于休眠状态,直到发生三件事之一:
如果读锁被获取,则返回值 true 。
如果当前线程:
InterruptedException is thrown and the current thread's interrupted status is cleared.
如果经过指定的等待时间,则返回值false 。 如果时间小于或等于零,该方法将不会等待。
在该实现中,由于该方法是明确的中断点,因此优先考虑响应正常或重入锁获取的中断,并报告等待时间的过去。
| 参数(Parameters) | |
|---|---|
timeout |
long: the time to wait for the read lock |
unit |
TimeUnit: the time unit of the timeout argument |
| 返回(Returns) | |
|---|---|
boolean |
true if the read lock was acquired |
| 抛出异常(Throws) | |
|---|---|
InterruptedException |
if the current thread is interrupted |
NullPointerException |
if the time unit is null |
void unlock ()
试图释放此锁。
如果读取器的数量现在为零,则锁定可用于写入锁定尝试。 如果当前线程不保存此锁,则引发IllegalMonitorStateException 。
| 抛出异常(Throws) | |
|---|---|
IllegalMonitorStateException |
if the current thread does not hold this lock |