|
JavaTM Platform Standard Ed. 6 |
|||||||||
앞의 클래스 다음의 클래스 | 프레임 있어 프레임 없음 | |||||||||
개요: 상자 | 필드 | 생성자 | 메소드 | 상세: 필드 | 생성자 | 메소드 |
java.lang.Objectjava.util.concurrent.locks.ReentrantReadWriteLock.WriteLock
public static class ReentrantReadWriteLock.WriteLock
ReentrantReadWriteLock.writeLock()
메소드에 의해 반환되는 락입니다.
생성자 의 개요 | |
---|---|
protected |
ReentrantReadWriteLock.WriteLock (ReentrantReadWriteLock lock)
서브 클래스에 의해 사용되는 생성자 입니다. |
메소드의 개요 | |
---|---|
int |
getHoldCount ()
현재의 thread의, 이 기입 락에 대한 보관 유지수를 조회합니다. |
boolean |
isHeldByCurrentThread ()
현재의 thread가 이 기입 락을 보관 유지하고 있을지 어떨지를 조회합니다. |
void |
lock ()
기입 락을 가져옵니다. |
void |
lockInterruptibly ()
현재의 thread가 interrupted 가 아닌 한, 기입 락을 가져옵니다. |
Condition |
newCondition ()
이 Lock 인스턴스로 사용하는 Condition 인스턴스를 돌려줍니다. |
String |
toString ()
이 락 및 그 상태를 식별하는 캐릭터 라인을 돌려줍니다. |
boolean |
tryLock ()
호출시에 다른 thread에 의해 보관 유지되어 있지 않은 경우에만, 기입 락을 가져옵니다. |
boolean |
tryLock (long timeout,
TimeUnit unit)
지정된 대기 시간내에 다른 thread가 락을 보관 유지하지 않고, 현재의 thread로인터럽트가 발생하고 있지 않는 경우에, 기입 락을 가져옵니다. |
void |
unlock ()
이 락의 해제을 시도합니다. |
클래스 java.lang. Object 로부터 상속된 메소드 |
---|
clone , equals , finalize , getClass , hashCode , notify , notifyAll , wait , wait , wait |
생성자 의 상세 |
---|
protected ReentrantReadWriteLock.WriteLock(ReentrantReadWriteLock lock)
lock
- 외부의 락 객체
NullPointerException
- lock 가 null 의 경우메소드의 상세 |
---|
public void lock()
read 락 또는 기입해 락의 모두 다른 thread에 보관 유지되어 있지 않은 경우, 기입 락을 취득해 즉시 복귀해, 기입 락의 보관 유지 카운트를 1 으로 설정합니다.
현재의 thread가 기입해 락을 벌써 보관 유지하고 있는 경우, 보관 유지 카운트의 값을 1 증분 해, 메소드를 즉시 복귀합니다.
락이 다른 thread에 의해 보관 유지되고 있는 경우, 현재의 thread가 thread 스케줄링에 관해서 무효가 되어, 기입 락이 취득될 때까지 대기합니다. 락이 취득되면(자), 기입 락 보관 유지 카운트가 1 으로 설정됩니다.
Lock
내의 lock
public void lockInterruptibly() throws InterruptedException
read 락 또는 기입해 락의 모두 다른 thread에 보관 유지되어 있지 않은 경우, 기입 락을 취득해 즉시 복귀해, 기입 락의 보관 유지 카운트를 1 으로 설정합니다.
현재의 thread가 락을 벌써 보관 유지하고 있는 경우, 보관 유지 카운트의 값을 1 증분 해, 메소드를 즉시 복귀합니다.
락이 다른 thread에 의해 보관 유지되고 있는 경우, 현재의 thread는 thread의 스케줄링에 관해서 무효가 되어, 다음의 2 개중 한쪽이 일어날 때까지 대기합니다.
기입 락이 현재의 thread에 의해 취득되었을 경우, 락 보관 유지 카운트가 1 으로 설정됩니다.
현재의 thread로,
InterruptedException
가 throw 되어 현재의 thread의 인터럽트 상태가 클리어 됩니다.
이 메소드는 명시적인 끼어들어 포인트이기 (위해)때문에, 이 구현에서는, 일반적으로 또는 재입 가능한 락 취득에의 인터럽트에의 응답에 높은 우선도가 주어집니다.
Lock
내의 lockInterruptibly
InterruptedException
- 현재의 thread로 인터럽트가 발생했을 경우public boolean tryLock()
다른 thread가 기입해 락과 읽어들여 락의 모두 보관 유지하고 있지 않는 경우에 기입해 락을 취득해, 값 true
로 즉시 복귀해, 락 보관 유지 카운트를 1 으로 설정합니다. 이 락이 공평 순서부 정책를 사용하도록(듯이) 설정되어 있는 경우에서도, 락이 사용 가능하면, 다른 thread가 현재 기입 락을 대기하고 있을지 어떨지에 관계없이,tryLock()
의 호출로 곧바로 락이 취득됩니다. 이 「인터럽트」(barging) 동작에 의해 공평성이 없어진다고는 말할 수 있어 이것은 특정의 상황하로 유용합니다. 이 락의 공평성 설정을 존중하는 경우는, 거의 등가인 tryLock(0, TimeUnit.SECONDS)
를 사용합니다 (이것도 인터럽트를 검출한다).
현재의 thread가 락을 벌써 보관 유지하고 있는 경우, 보관 유지 카운트의 값을 1 증분 해,true
로 복귀합니다.
락이 다른 thread에 의해 보관 유지되고 있는 경우, 이 메소드는, 값 false
로 즉시 복귀합니다.
Lock
내의 tryLock
true
, 그렇지 않은 경우는 false
public boolean tryLock(long timeout, TimeUnit unit) throws InterruptedException
다른 thread가 기입해 락과 읽어들여 락의 모두 보관 유지하고 있지 않는 경우에 기입해 락을 취득해, 값 true 로 즉시 복귀해, 락 보관 유지 카운트를 1 으로 설정합니다. 이 락이 공평 순서부 정책를 사용하도록(듯이) 설정되어 있어도, 다른 thread가 기입해 락을 대기하고 있는 경우는, 사용 가능한 락은 취득되지 않습니다. 이것은,tryLock()
메소드와는 대조적입니다. 공평 락에 대한 화물 운반선을 허가하지 않는, 시간 설정된 tryLock
를 사용하는 경우는, 시간 설정과 비시간 설정의 양형식을 조합해 사용합니다.
if (lock.tryLock() || lock.tryLock(timeout, unit) ) { ... }
현재의 thread가 락을 벌써 보관 유지하고 있는 경우, 보관 유지 카운트의 값을 1 증분 해,true
로 복귀합니다.
락이 다른 thread에 의해 보관 유지되고 있는 경우, 현재의 thread는 thread의 스케줄링에 관해서 무효가 되어, 다음의 3 개중 한쪽이 일어날 때까지 대기합니다.
기입 락이 취득되었을 경우, 값 true
가 돌려주어져 기입 락 보관 유지 카운트가 1 으로 설정됩니다.
현재의 thread로,
InterruptedException
가 throw 되어 현재의 thread의 인터럽트 상태가 클리어 됩니다.
지정된 대기 시간이 경과하면(자), 값 false
가 돌려주어집니다. 시간이 제로 또는 그것보다 작은 경우, 메소드는 대기하지 않습니다.
이 메소드는 명시적인 끼어들어 포인트이기 (위해)때문에, 이 구현에서는, 일반적으로 또는 재입 가능한 락 취득, 및 대기 시간 경과 리포트에의 인터럽트에 대한 응답에 높은 우선도가 주어집니다.
Lock
내의 tryLock
timeout
- 기입 락을 대기하는 시간unit
- timeout 인수의 시간 단위
true
, 락을 취득하기 전에 대기 시간이 경과했을 경우는 false
InterruptedException
- 현재의 thread로 인터럽트가 발생했을 경우
NullPointerException
- 시간 단위가 null 의 경우public void unlock()
현재의 thread가 이 락의 홀더인 경우, 보관 유지 카운트의 값이 줄여집니다. 보관 유지 카운트가 제로가 되면(자), 락이 해제됩니다. 현재의 thread가 이 락의 홀더가 아닌 경우,IllegalMonitorStateException
가 throw 됩니다.
Lock
내의 unlock
IllegalMonitorStateException
- 현재의 thread가 이 락을 보관 유지하지 않는 경우public Condition newCondition()
Lock
인스턴스로 사용하는 Condition
인스턴스를 돌려줍니다. 반환되는 Condition
인스턴스는,Object
감시 메소드 (wait
,notify
, 및 notifyAll
)를 편입 감시 락으로 사용하는 경우와 같은 사용 방법을 지원합니다.
Condition
메소드의 호출시에 이 기입 락을 보관 유지하고 있지 않는 경우,IllegalMonitorStateException
가 throw 됩니다 (read 락은 기입해 락과는 독립해 보관 유지되기 (위해)때문에, 체크되거나 영향을 받을 것은 없습니다. 다만, 현재의 thread가 읽어들여 락도 취득하고 있는 경우에 상태 대기 메소드를 호출하는 것은, 그것을 블록 해제 가능한 다른 thread로 기입해 락을 취득할 수 없게 되어 버리기 (위해)때문에, 항상 근본적인 잘못입니다).
InterruptedException
가 throw 되어 thread의 인터럽트 상태가 클리어 됩니다.
Lock
내의 newCondition
public String toString()
"Unlocked"
또는 캐릭터 라인 "Locked by"
에 이어, 소유하는 thread의이름이 포함됩니다.
Object
내의 toString
public boolean isHeldByCurrentThread()
ReentrantReadWriteLock.isWriteLockedByCurrentThread()
와 같습니다.
true
, 그렇지 않은 경우는 false
public int getHoldCount()
ReentrantReadWriteLock.getWriteHoldCount()
와 같습니다.
|
JavaTM Platform Standard Ed. 6 |
|||||||||
앞의 클래스 다음의 클래스 | 프레임 있어 프레임 없음 | |||||||||
개요: 상자 | 필드 | 생성자 | 메소드 | 상세: 필드 | 생성자 | 메소드 |
Copyright 2006 Sun Microsystems, Inc. All rights reserved. Use is subject to license terms . Documentation Redistribution Policy 도 참조해 주세요.