|
JavaTM Platform Standard Ed. 6 |
|||||||||
| 앞의 클래스 다음의 클래스 | 프레임 있어 프레임 없음 | |||||||||
| 개요 : 상자 | 필드 | 생성자 | 메소드 | 상세: 필드 | 생성자 | 메소드 | |||||||||
java.lang.Objectjava.util.concurrent.locks.AbstractOwnableSynchronizer
java.util.concurrent.locks.AbstractQueuedLongSynchronizer
public abstract class AbstractQueuedLongSynchronizer
동기 상태가 long 로서 보관 유지되는 AbstractQueuedSynchronizer 의 버젼입니다. 이 클래스에는 AbstractQueuedSynchronizer 와 완전히 같은 구조체, 프로퍼티, 및 메소드가 있습니다만, 상태 관련의 모든 파라미터와 결과는,int 는 아니고 long 로서 정의되고 있는 점이 다릅니다. 이 클래스는, 복수 레벨의 락이나 배리어라고 하는 16 비트 상태가 필요한 싱크로나이저의 작성시에 유용하다라고 하는 것이 있습니다.
사용상의 주의나 예에 대해서는,AbstractQueuedSynchronizer 를 참조해 주세요.
| 상자의 클래스의 개요 | |
|---|---|
class |
AbstractQueuedLongSynchronizer.ConditionObject
Lock 구현의 기반으로서 기능하는 AbstractQueuedLongSynchronizer 의 Condition 구현입니다. |
| 생성자 의 개요 | |
|---|---|
protected |
AbstractQueuedLongSynchronizer ()
제로의 초기 동기 상태를 사용해, 신규 AbstractQueuedLongSynchronizer 인스턴스를 작성합니다. |
| 메소드의 개요 | |
|---|---|
void |
acquire (long arg)
인터럽트를 무시해, 배타 모드로 가져옵니다. |
void |
acquireInterruptibly (long arg)
배타 모드로 가져옵니다. |
void |
acquireShared (long arg)
인터럽트를 무시해, 공유 모드로 가져옵니다. |
void |
acquireSharedInterruptibly (long arg)
공유 모드로 가져옵니다. |
protected boolean |
compareAndSetState (long expect,
long update)
현재 상태치가 예상되는 값에 동일한 경우, 동기 상태가 지정된 갱신치에 원자적으로 설정합니다. |
Collection <Thread > |
getExclusiveQueuedThreads ()
배타 모드로 취득하기 위해서 대기중의 thread를 포함한 컬렉션을 돌려줍니다. |
Thread |
getFirstQueuedThread ()
큐내의 최초의 (대기 시간의 가장 길다) thread를 돌려줍니다. |
Collection <Thread > |
getQueuedThreads ()
취득을 대기하고 있는 thread를 포함한 컬렉션을 돌려줍니다. |
int |
getQueueLength ()
취득을 대기하고 있는 thread의 추정수를 돌려줍니다. |
Collection <Thread > |
getSharedQueuedThreads ()
공유 모드로 취득하기 위해서 대기중의 thread를 포함한 컬렉션을 돌려줍니다. |
protected long |
getState ()
동기 상태의 현재가를 돌려줍니다. |
Collection <Thread > |
getWaitingThreads (AbstractQueuedLongSynchronizer.ConditionObject condition)
이 싱크로나이저에 관련지을 수 있었던 지정 상태로 대기중의 thread를 포함한 컬렉션을 돌려줍니다. |
int |
getWaitQueueLength (AbstractQueuedLongSynchronizer.ConditionObject condition)
이 싱크로나이저에 관련지을 수 있었던 지정 상태로 대기하고 있는 thread의 추정수를 돌려줍니다. |
boolean |
hasContended ()
이 싱크로나이저의 취득으로 경합 하고 있는 thread가 존재할지 어떨지 (즉, acquire 메소드가 블록 되었는지 어떠했는지)를 조회합니다. |
boolean |
hasQueuedThreads ()
취득을 대기중의 thread가 존재할지 어떨지를 조회합니다. |
boolean |
hasWaiters (AbstractQueuedLongSynchronizer.ConditionObject condition)
이 싱크로나이저에 관련지을 수 있었던 지정 상태로 대기하고 있는 thread가 존재할지 어떨지를 조회합니다. |
protected boolean |
isHeldExclusively ()
현재의 (호출측의) thread에 관해서, 동기가 배타적으로 행해지는 경우는 true 를 돌려줍니다. |
boolean |
isQueued (Thread thread)
지정된 thread가, 현재 큐에 들어가 있는 경우는 true 를 돌려줍니다. |
boolean |
owns (AbstractQueuedLongSynchronizer.ConditionObject condition)
지정된 ConditionObject 가 이 싱크로나이저를 락으로서 사용할지 어떨지를 조회합니다. |
boolean |
release (long arg)
배타 모드로 해제합니다. |
boolean |
releaseShared (long arg)
공유 모드로 해제합니다. |
protected void |
setState (long newState)
동기 상태의 값을 설정합니다. |
String |
toString ()
싱크로나이저 및 그 상태를 식별하는 캐릭터 라인을 돌려줍니다. |
protected boolean |
tryAcquire (long arg)
배타 모드에서의 취득을 시도합니다. |
boolean |
tryAcquireNanos (long arg,
long nanosTimeout)
배타 모드로 취득을 시도합니다. |
protected long |
tryAcquireShared (long arg)
공유 모드에서의 취득을 시도합니다. |
boolean |
tryAcquireSharedNanos (long arg,
long nanosTimeout)
공유 모드로 취득을 시도합니다. |
protected boolean |
tryRelease (long arg)
배타 모드에서의 해제을 반영하도록(듯이), 상태의 설정을 시도합니다. |
protected boolean |
tryReleaseShared (long arg)
공유 모드에서의 해제을 반영하도록(듯이), 상태의 설정을 시도합니다. |
| 클래스 java.util.concurrent.locks. AbstractOwnableSynchronizer 로부터 상속된 메소드 |
|---|
getExclusiveOwnerThread , setExclusiveOwnerThread |
| 클래스 java.lang. Object 로부터 상속된 메소드 |
|---|
clone , equals , finalize , getClass , hashCode , notify , notifyAll , wait , wait , wait |
| 생성자 의 상세 |
|---|
protected AbstractQueuedLongSynchronizer()
| 메소드의 상세 |
|---|
protected final long getState()
protected final void setState(long newState)
newState - 신규 상태치
protected final boolean compareAndSetState(long expect,
long update)
expect - 예상되는 값update - 새로운 값
protected boolean tryAcquire(long arg)
이 메소드는 항상 취득을 실행하는 thread에 의해 불려 갑니다. 이 메소드가 실패를 리포트해, 한편 thread가 큐에 넣어지지 않은 경우, 취득 메소드는, 다른 thread로부터의 해제에 의해 신호가 송신될 때까지 그 thread를 큐에 넣을 수가 있습니다. 이것은,Lock.tryLock() 메소드의 구현에 사용할 수 있습니다.
디폴트 구현은,UnsupportedOperationException 를 throw 합니다.
arg - acquire 의 인수. 이 값은, 항상 acquire 메소드에게 건네지는 값, 또는 상태 대기에의 엔트리로 보존되는 값이 된다. 그 이외의 경우, 이 값은 미해석이 되어, 임의의 값을 나타낼 수가 있다
true. 성공시에는, 이 객체는 취득이 끝난 상태이다
IllegalMonitorStateException - 취득에 의해, 이 싱크로나이저가 부정한 상태에 놓여지는 경우.
동기가 올바르게 기능하기 위해서는, 이 예외를 일관한 방식에서 throw 할 필요가 있다
UnsupportedOperationException - 배타 모드가 지원되어 있지 않은 경우protected boolean tryRelease(long arg)
이 메소드는, 해제을 실행하는 thread에 의해 항상 불려 갑니다.
디폴트 구현은,UnsupportedOperationException 를 throw 합니다.
arg - release 의 인수. 이 값은, 항상 release 메소드에게 건네지는 값, 또는 상태 대기에의 엔트리에서의 현재 상태치가 된다.
그 이외의 경우, 이 값은 미해석이 되어, 임의의 값을 나타낼 수가 있다
true, 그렇지 않은 경우는 false
IllegalMonitorStateException - 해제에 의해, 이 싱크로나이저가 부정한 상태에 놓여지는 경우.
동기가 올바르게 기능하기 위해서는, 이 예외를 일관한 방식에서 throw 할 필요가 있다
UnsupportedOperationException - 배타 모드가 지원되어 있지 않은 경우protected long tryAcquireShared(long arg)
이 메소드는 항상 취득을 실행하는 thread에 의해 불려 갑니다. 이 메소드가 실패를 리포트해, 한편 thread가 큐에 넣어지지 않은 경우, 취득 메소드는, 다른 thread로부터의 해제에 의해 신호가 송신될 때까지 그 thread를 큐에 넣을 수가 있습니다.
디폴트 구현은,UnsupportedOperationException 를 throw 합니다.
arg - acquire 의 인수. 이 값은, 항상 acquire 메소드에게 건네지는 값, 또는 상태 대기에의 엔트리로 보존되는 값이 된다.
그 이외의 경우, 이 값은 미해석이 되어, 임의의 값을 나타낼 수가 있다
IllegalMonitorStateException - 취득에 의해, 이 싱크로나이저가 부정한 상태에 놓여지는 경우.
동기가 올바르게 기능하기 위해서는, 이 예외를 일관한 방식에서 throw 할 필요가 있다
UnsupportedOperationException - 공유 모드가 지원되어 있지 않은 경우protected boolean tryReleaseShared(long arg)
이 메소드는, 해제을 실행하는 thread에 의해 항상 불려 갑니다.
디폴트 구현은,UnsupportedOperationException 를 throw 합니다.
arg - release 의 인수. 이 값은, 항상 release 메소드에게 건네지는 값, 또는 상태 대기에의 엔트리에서의 현재 상태치가 된다.
그 이외의 경우, 이 값은 미해석이 되어, 임의의 값을 나타낼 수가 있다
true, 그렇지 않은 경우는 false
IllegalMonitorStateException - 해제에 의해, 이 싱크로나이저가 부정한 상태에 놓여지는 경우.
동기가 올바르게 기능하기 위해서는, 이 예외를 일관한 방식에서 throw 할 필요가 있다
UnsupportedOperationException - 공유 모드가 지원되어 있지 않은 경우protected boolean isHeldExclusively()
true 를 돌려줍니다. 비대기 상태 AbstractQueuedLongSynchronizer.ConditionObject 메소드가 불려 갈 때 마다, 이 메소드가 불려 갑니다 (대기 상태의 메소드에서는 release(long) 가 불려 간다).
디폴트 구현은,UnsupportedOperationException 를 throw 합니다. 이 메소드는,AbstractQueuedLongSynchronizer.ConditionObject 메소드로 내부적에게만 불려 가기 (위해)때문에, 상태가 사용되지 않는 경우는 정의할 필요가 없습니다.
true, 그렇지 않은 경우는 false
UnsupportedOperationException - 상태가 지원되지 않는 경우public final void acquire(long arg)
tryAcquire(long) 를 호출하는 것으로 구현되어 성공시에 복귀합니다. 그 이외의 경우, thread는 큐에 넣어져 대부분의 경우 블록 및 블록 해제를 몇번이나 반복해, 성공할 때까지 tryAcquire(long) 를 호출합니다. 이 메소드는,Lock.lock() 메소드의 구현에 사용할 수 있습니다.
arg - acquire 의 인수. 이 값은 tryAcquire(long) 에 송신되지만, 그 이외의 경우는 미해석이 되어, 임의의 값을 나타낼 수가 있다
public final void acquireInterruptibly(long arg)
throws InterruptedException
tryAcquire(long) 를 호출하는 것으로 구현되어 성공시에 복귀합니다. 그 이외의 경우, thread는 큐에 넣어져 대부분의 경우 블록 및 블록 해제를 몇번이나 반복해, 성공할까 thread로 인터럽트가 발생할 때까지 tryAcquire(long) 를 호출합니다. 이 메소드는,Lock.lockInterruptibly() 메소드의 구현에 사용할 수 있습니다.
arg - acquire 의 인수. 이 값은 tryAcquire(long) 에 송신되지만, 그 이외의 경우는 미해석이 되어, 임의의 값을 나타낼 수가 있다
InterruptedException - 현재의 thread로 인터럽트가 발생했을 경우
public final boolean tryAcquireNanos(long arg,
long nanosTimeout)
throws InterruptedException
tryAcquire(long) 를 호출하는 것으로 구현되어 성공시에 복귀합니다. 그 이외의 경우, thread는 큐에 넣어져 대부분의 경우 블록 및 블록 해제를 몇번이나 반복해, 성공할까 thread로 인터럽트가 발생하는지, 타임 아웃 시간이 경과할 때까지 tryAcquire(long) 를 호출합니다. 이 메소드는,Lock.tryLock(long, TimeUnit) 메소드의 구현에 사용할 수 있습니다.
arg - acquire 의 인수. 이 값은 tryAcquire(long) 에 송신되지만, 그 이외의 경우는 미해석이 되어, 임의의 값을 나타낼 수가 있는nanosTimeout - 대기하는 최대 나노초수
true, 타임 아웃 했을 경우는 false
InterruptedException - 현재의 thread로 인터럽트가 발생했을 경우public final boolean release(long arg)
tryRelease(long) 가 true 를 돌려주는 경우, 1 개(살) 이상의 thread를 블록 해제하는 것으로 구현됩니다. 이 메소드는,Lock.unlock() 메소드의 구현으로 사용할 수 있습니다.
arg - release 의 인수. 이 값은 tryRelease(long) 에 송신되지만, 그 이외의 경우는 미해석이 되어, 임의의 값을 나타낼 수가 있다
tryRelease(long) 로부터 반환되는 값public final void acquireShared(long arg)
tryAcquireShared(long) 를 호출하는 것으로 구현되어 성공시에 복귀합니다. 그 이외의 경우, thread는 큐에 넣어져 대부분의 경우 블록 및 블록 해제를 몇번이나 반복해, 성공할 때까지 tryAcquireShared(long) 를 호출합니다.
arg - acquire 의 인수. 이 값은 tryAcquireShared(long) 에 송신되지만, 그 이외의 경우는 미해석이 되어, 임의의 값을 나타낼 수가 있다
public final void acquireSharedInterruptibly(long arg)
throws InterruptedException
tryAcquireShared(long) 를 호출하는 것으로 구현되어 성공시에 복귀합니다. 그 이외의 경우, thread는 큐에 넣어져 대부분의 경우 블록 및 블록 해제를 몇번이나 반복해, 성공할까 thread로 인터럽트가 발생할 때까지 tryAcquireShared(long) 를 호출합니다.
arg - acquire 의 인수.
이 값은 tryAcquireShared(long) 에 송신되지만, 그 이외의 경우는 미해석이 되어, 임의의 값을 나타낼 수가 있다
InterruptedException - 현재의 thread로 인터럽트가 발생했을 경우
public final boolean tryAcquireSharedNanos(long arg,
long nanosTimeout)
throws InterruptedException
tryAcquireShared(long) 를 호출하는 것으로 구현되어 성공시에 복귀합니다. 그 이외의 경우, thread는 큐에 넣어져 대부분의 경우 블록 및 블록 해제를 몇번이나 반복해, 성공하는지, thread로 인터럽트가 발생하는지, 타임 아웃 시간이 경과할 때까지 tryAcquireShared(long) 를 호출합니다.
arg - acquire 의 인수. 이 값은 tryAcquireShared(long) 에 송신되지만, 그 이외의 경우는 미해석이 되어, 임의의 값을 나타낼 수가 있는nanosTimeout - 대기하는 최대 나노초수
true, 타임 아웃 했을 경우는 false
InterruptedException - 현재의 thread로 인터럽트가 발생했을 경우public final boolean releaseShared(long arg)
tryReleaseShared(long) 가 true 를 돌려주는 경우, 1 개(살) 이상의 thread를 블록 해제하는 것으로 구현됩니다.
arg - release 의 인수. 이 값은 tryReleaseShared(long) 에 송신되지만, 그 이외의 경우는 미해석이 되어, 임의의 값을 나타낼 수가 있다
tryReleaseShared(long) 로부터 반환되는 값public final boolean hasQueuedThreads()
true 가 돌려주어져도 다른 thread가 취득을 실행하는 것은 보증되지 않습니다.
이 구현에서는, 이 조작은 일정한 시간에 복귀합니다.
truepublic final boolean hasContended()
이 구현에서는, 이 조작은 일정한 시간에 복귀합니다.
truepublic final Thread getFirstQueuedThread()
null 를 돌려줍니다.
일반적으로, 이 구현에서는, 이 조작은 일정시간으로 복귀합니다. 다만, 다른 thread가 큐의 변경을 병행해 실행하고 있는 경우는, 경합에 의해 처리를 반복하는 경우가 있습니다.
nullpublic final boolean isQueued(Thread thread)
이 구현은, 큐를 횡단(traverse) 해 지정된 thread의 존재를 판별합니다.
thread - thread
true
NullPointerException - thread가 null 의 경우public final int getQueueLength()
public final Collection <Thread > getQueuedThreads()
public final Collection <Thread > getExclusiveQueuedThreads()
getQueuedThreads() 와 같은 프로퍼티을 보관 유지합니다.
public final Collection <Thread > getSharedQueuedThreads()
getQueuedThreads() 와 같은 프로퍼티을 보관 유지합니다.
public String toString()
"State =" 에 이어 getState() 의 현재가, 및 큐가 빈 상태(empty)인가 어떤가에 응해 "nonempty" 또는 "empty" 가 포함됩니다.
Object 내의 toString public final boolean owns(AbstractQueuedLongSynchronizer.ConditionObject condition)
condition - 상태
NullPointerException - condition 가 null 의 경우public final boolean hasWaiters(AbstractQueuedLongSynchronizer.ConditionObject condition)
condition - 상태
IllegalMonitorStateException - 배타적 동기가 보관 유지되지 않는 경우
IllegalArgumentException - 지정된 상태가 이 싱크로나이저와 관련지을 수 있지 않은 경우
NullPointerException - condition 가 null 의 경우public final int getWaitQueueLength(AbstractQueuedLongSynchronizer.ConditionObject condition)
condition - 상태
IllegalMonitorStateException - 배타적 동기가 보관 유지되지 않는 경우
IllegalArgumentException - 지정된 상태가 이 싱크로나이저와 관련지을 수 있지 않은 경우
NullPointerException - condition 가 null 의 경우public final Collection <Thread > getWaitingThreads(AbstractQueuedLongSynchronizer.ConditionObject condition)
condition - 상태
IllegalMonitorStateException - 배타적 동기가 보관 유지되지 않는 경우
IllegalArgumentException - 지정된 상태가 이 싱크로나이저와 관련지을 수 있지 않은 경우
NullPointerException - condition 가 null 의 경우
|
JavaTM Platform Standard Ed. 6 |
|||||||||
| 앞의 클래스 다음의 클래스 | 프레임 있어 프레임 없음 | |||||||||
| 개요 : 상자 | 필드 | 생성자 | 메소드 | 상세: 필드 | 생성자 | 메소드 | |||||||||
Copyright 2006 Sun Microsystems, Inc. All rights reserved. Use is subject to license terms . Documentation Redistribution Policy 도 참조해 주세요.