public static class ReentrantReadWriteLock.WriteLock extends Object implements Lock, Serializable
| Modifier | Constructor and Description |
|---|---|
protected |
WriteLock(ReentrantReadWriteLock lock)
子类使用的构造函数
|
| Modifier and Type | Method and Description |
|---|---|
int |
getHoldCount()
通过当前线程对这个写锁的数目进行查询。
|
boolean |
isHeldByCurrentThread()
查询,如果这个写锁是由当前线程举行的。
|
void |
lock()
获取写锁。
|
void |
lockInterruptibly()
获得写锁除非当前线程
interrupted。
|
Condition |
newCondition()
|
String |
toString()
返回一个确定此锁的字符串,以及它的锁状态。
|
boolean |
tryLock()
仅当调用时不在另一个线程持有时,才获取写锁。
|
boolean |
tryLock(long timeout, TimeUnit unit)
获得写锁如果不是由另一个线程在等待时间和当前线程没有被
interrupted。
|
void |
unlock()
试图释放这个锁。
|
protected WriteLock(ReentrantReadWriteLock lock)
lock -外锁对象
NullPointerException -如果锁是无效的
public void lock()
如果读写锁或写锁都由另一个线程持有,并立即返回,则设置写锁计数为一个。
如果当前线程已经拥有写锁然后把计数递增的方法立即返回。
如果锁由另一个线程持有,那么当前线程成为禁用线程调度的目的,并处于休眠状态,直到写锁已被收购,在这一时间写锁保持计数设置为一个。
public void lockInterruptibly()
throws InterruptedException
如果读写锁或写锁都由另一个线程持有,并立即返回,则设置写锁计数为一个。
如果当前线程已经持有这个锁然后把计数递增的方法立即返回。
如果锁是由另一个线程持有的,那么当前线程成为禁用线程调度的目的,并处于休眠状态,直到两个事情发生:
如果写锁是由当前线程获取的,那么锁保持计数将被设置为一个。
如果当前线程:
InterruptedException投入和当前线程的中断状态被清除。
在这个实现中,这种方法是一种明确的中断点,优先响应中断超过正常或折返的锁的获取。
lockInterruptibly 接口
Lock
InterruptedException -如果当前线程被中断
public boolean tryLock()
获得写锁如果既不读也不写锁是由另一个线程并立即返回的值true举行,设置写入锁持有数1。即使这把锁已设置为使用一个公平的订货政策,呼吁tryLock()将立即如果它是可用的获取锁,是否有其他线程正在等待写锁。这种“闯”的行为在某些情况下可能是有用的,即使它打破了公平。如果你想尊重公平这把锁的设置,然后使用tryLock(0, TimeUnit.SECONDS) 几乎是等价的(它也检测到中断)。
如果当前线程已经持有这个锁然后把计数递增的方法返回true。
如果锁是由另一个线程然后这个方法会立即返回的值false。
public boolean tryLock(long timeout,
TimeUnit unit)
throws InterruptedException
获得写锁如果既不读也不写锁是由另一个线程并立即返回的值true举行,设置写入锁持有数1。如果这个锁已被设置为使用一个公平的订货策略,那么一个可用的锁将不会被收购,如果任何其他线程正在等待写锁。与此形成对比的是,tryLock()方法。如果你想要一个定时tryLock不允许讨价还价在公平锁,然后结合定时和不定时的形式:
if (lock.tryLock() ||
lock.tryLock(timeout, unit)) {
...
}
如果当前线程已经持有这个锁然后把计数递增的方法返回true。
如果锁由另一个线程持有,那么当前线程成为禁用线程调度的目的,并处于休眠状态,直到三个事情发生:
如果写入锁是后天再返回值true和写锁持有数设置为一个。
如果当前线程:
InterruptedException投入和当前线程的中断状态被清除。
如果指定的等待时间的流逝,然后false返回值。如果时间小于或等于零,该方法将不会等待在所有。
在这个实现中,这种方法是一种明确的中断点,优先响应中断超过正常或折返的锁的获取,并在报告的等待时间的流逝。
tryLock 接口
Lock
timeout -时间等待写锁
unit - timeout参数的时间单位
true如果锁是免费的,是由当前线程获取,或写锁已经被当前线程举行;和
false如果等待的时间才可以获得的锁。
InterruptedException -如果当前线程被中断
NullPointerException -如果时间单位为零
public void unlock()
如果当前线程持有这个锁然后把计数减少。如果保持计数现在为零,则释放锁。如果当前线程是不是这个锁持有者然后IllegalMonitorStateException抛出。
unlock 接口
Lock
IllegalMonitorStateException -如果当前线程不持有这个锁
public Condition newCondition()
Condition实例使用这
Lock实例。
返回的Condition实例支持Object监测方法做同样的用法(wait,notify,和notifyAll)当使用内置监控锁。
Condition方法叫做然后IllegalMonitorStateException抛出。(读锁是独立于写锁的,所以不检查或受影响。但是它本质上始终是一个错误,调用一个方法时,当前线程状态等也获得读锁,其他线程可以从疏通它将无法获得写锁。)InterruptedException将抛出,和线程的中断状态将被清除。newCondition 接口
Lock
public boolean isHeldByCurrentThread()
ReentrantReadWriteLock.isWriteLockedByCurrentThread()。
true如果当前线程持有该锁和
false否则
public int getHoldCount()
ReentrantReadWriteLock.getWriteHoldCount()。
Submit a bug or feature
For further API reference and developer documentation, see Java SE Documentation. That documentation contains more detailed, developer-targeted descriptions, with conceptual overviews, definitions of terms, workarounds, and working code examples.
Copyright © 1993, 2014, Oracle and/or its affiliates. All rights reserved.