|
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가 취득을 실행하는 것은 보증되지 않습니다.
이 구현에서는, 이 조작은 일정한 시간에 복귀합니다.
true
public final boolean hasContended()
이 구현에서는, 이 조작은 일정한 시간에 복귀합니다.
true
public final Thread getFirstQueuedThread()
null
를 돌려줍니다.
일반적으로, 이 구현에서는, 이 조작은 일정시간으로 복귀합니다. 다만, 다른 thread가 큐의 변경을 병행해 실행하고 있는 경우는, 경합에 의해 처리를 반복하는 경우가 있습니다.
null
public 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 도 참조해 주세요.