JavaTM Platform
Standard Ed. 6

java.util.concurrent.locks
클래스 AbstractQueuedLongSynchronizer

java.lang.Object 
  상위를 확장 java.util.concurrent.locks.AbstractOwnableSynchronizer 
      상위를 확장 java.util.concurrent.locks.AbstractQueuedLongSynchronizer
모든 구현된 인터페이스:
Serializable


public abstract class AbstractQueuedLongSynchronizer
extends AbstractOwnableSynchronizer
implements Serializable

동기 상태가 long 로서 보관 유지되는 AbstractQueuedSynchronizer 의 버젼입니다. 이 클래스에는 AbstractQueuedSynchronizer 와 완전히 같은 구조체, 프로퍼티, 및 메소드가 있습니다만, 상태 관련의 모든 파라미터와 결과는,int 는 아니고 long 로서 정의되고 있는 점이 다릅니다. 이 클래스는, 복수 레벨의 락이나 배리어라고 하는 16 비트 상태가 필요한 싱크로나이저의 작성시에 유용하다라고 하는 것이 있습니다.

사용상의 주의나 예에 대해서는,AbstractQueuedSynchronizer 를 참조해 주세요.

도입된 버젼:
1.6
관련 항목:
직렬화 된 형식

상자의 클래스의 개요
 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
 

생성자 의 상세

AbstractQueuedLongSynchronizer

protected AbstractQueuedLongSynchronizer()
제로의 초기 동기 상태를 사용해, 신규 AbstractQueuedLongSynchronizer 인스턴스를 작성합니다.

메소드의 상세

getState

protected final long getState()
동기 상태의 현재가를 돌려줍니다. 이 조작은,volatile 읽을 메모리 시멘틱스를 보관 유지합니다.

반환값:
현재 상태치

setState

protected final void setState(long newState)
동기 상태의 값을 설정합니다. 이 조작은,volatile 기입의 메모리 시멘틱스를 보관 유지합니다.

파라미터:
newState - 신규 상태치

compareAndSetState

protected final boolean compareAndSetState(long expect,
                                           long update)
현재 상태치가 예상되는 값에 동일한 경우, 동기 상태가 지정된 갱신치에 원자적으로 설정합니다. 이 조작은,volatile read 및 기입의 메모리 시멘틱스를 보관 유지합니다.

파라미터:
expect - 예상되는 값
update - 새로운 값
반환값:
성공하는 경우는 true. false 는, 실제의 값이 예상되는 값과 등가가 아닌 것을 나타낸다

tryAcquire

protected boolean tryAcquire(long arg)
배타 모드에서의 취득을 시도합니다. 이 메소드는, 객체가 배타 모드에서의 취득을 허가하는 상태에 있을지 어떨지를 조회해, 허가하는 상태에 있으면 가져옵니다.

이 메소드는 항상 취득을 실행하는 thread에 의해 불려 갑니다. 이 메소드가 실패를 리포트해, 한편 thread가 큐에 넣어지지 않은 경우, 취득 메소드는, 다른 thread로부터의 해제에 의해 신호가 송신될 때까지 그 thread를 큐에 넣을 수가 있습니다. 이것은,Lock.tryLock() 메소드의 구현에 사용할 수 있습니다.

디폴트 구현은,UnsupportedOperationException 를 throw 합니다.

파라미터:
arg - acquire 의 인수. 이 값은, 항상 acquire 메소드에게 건네지는 값, 또는 상태 대기에의 엔트리로 보존되는 값이 된다. 그 이외의 경우, 이 값은 미해석이 되어, 임의의 값을 나타낼 수가 있다
반환값:
성공하는 경우는 true. 성공시에는, 이 객체는 취득이 끝난 상태이다
예외:
IllegalMonitorStateException - 취득에 의해, 이 싱크로나이저가 부정한 상태에 놓여지는 경우. 동기가 올바르게 기능하기 위해서는, 이 예외를 일관한 방식에서 throw 할 필요가 있다
UnsupportedOperationException - 배타 모드가 지원되어 있지 않은 경우

tryRelease

protected boolean tryRelease(long arg)
배타 모드에서의 해제을 반영하도록(듯이), 상태의 설정을 시도합니다.

이 메소드는, 해제을 실행하는 thread에 의해 항상 불려 갑니다.

디폴트 구현은,UnsupportedOperationException 를 throw 합니다.

파라미터:
arg - release 의 인수. 이 값은, 항상 release 메소드에게 건네지는 값, 또는 상태 대기에의 엔트리에서의 현재 상태치가 된다. 그 이외의 경우, 이 값은 미해석이 되어, 임의의 값을 나타낼 수가 있다
반환값:
대기중의 임의의 thread가 취득을 시도할 수가 있도록(듯이), 이 객체가 완전하게 해제된 상태에 있는 경우는 true, 그렇지 않은 경우는 false
예외:
IllegalMonitorStateException - 해제에 의해, 이 싱크로나이저가 부정한 상태에 놓여지는 경우. 동기가 올바르게 기능하기 위해서는, 이 예외를 일관한 방식에서 throw 할 필요가 있다
UnsupportedOperationException - 배타 모드가 지원되어 있지 않은 경우

tryAcquireShared

protected long tryAcquireShared(long arg)
공유 모드에서의 취득을 시도합니다. 이 메소드는, 객체가 공유 모드에서의 취득을 허가하는 상태에 있을지 어떨지를 조회해, 허가하는 상태에 있으면 가져옵니다.

이 메소드는 항상 취득을 실행하는 thread에 의해 불려 갑니다. 이 메소드가 실패를 리포트해, 한편 thread가 큐에 넣어지지 않은 경우, 취득 메소드는, 다른 thread로부터의 해제에 의해 신호가 송신될 때까지 그 thread를 큐에 넣을 수가 있습니다.

디폴트 구현은,UnsupportedOperationException 를 throw 합니다.

파라미터:
arg - acquire 의 인수. 이 값은, 항상 acquire 메소드에게 건네지는 값, 또는 상태 대기에의 엔트리로 보존되는 값이 된다. 그 이외의 경우, 이 값은 미해석이 되어, 임의의 값을 나타낼 수가 있다
반환값:
실패했을 경우는 0 보다 작은 값. 공유 모드에서의 취득에 성공했지만, 이후의 공유 모드에서의 취득에 성공하지 않는 경우는 제로. 공유 모드에서의 취득에 성공해, 이후의 공유 모드에서의 취득에도 성공할 가능성이 있는 경우는 정의 값. 정의 값의 경우, 후속의 대기 thread는 가용성을 체크할 필요가 있다 (3 개(살)이 다른 반환값의 지원에 의해, 취득만이 때때로 배타적으로 동작하는 문맥내에서 이 메소드를 사용하는 것이 가능하게 된다). 성공시에는, 이 객체는 취득이 끝난 상태이다
예외:
IllegalMonitorStateException - 취득에 의해, 이 싱크로나이저가 부정한 상태에 놓여지는 경우. 동기가 올바르게 기능하기 위해서는, 이 예외를 일관한 방식에서 throw 할 필요가 있다
UnsupportedOperationException - 공유 모드가 지원되어 있지 않은 경우

tryReleaseShared

protected boolean tryReleaseShared(long arg)
공유 모드에서의 해제을 반영하도록(듯이), 상태의 설정을 시도합니다.

이 메소드는, 해제을 실행하는 thread에 의해 항상 불려 갑니다.

디폴트 구현은,UnsupportedOperationException 를 throw 합니다.

파라미터:
arg - release 의 인수. 이 값은, 항상 release 메소드에게 건네지는 값, 또는 상태 대기에의 엔트리에서의 현재 상태치가 된다. 그 이외의 경우, 이 값은 미해석이 되어, 임의의 값을 나타낼 수가 있다
반환값:
이 릴리스의 공유 모드로 대기중의 취득 (공유 또는 배타)을 허가할 수 있는 경우는 true, 그렇지 않은 경우는 false
예외:
IllegalMonitorStateException - 해제에 의해, 이 싱크로나이저가 부정한 상태에 놓여지는 경우. 동기가 올바르게 기능하기 위해서는, 이 예외를 일관한 방식에서 throw 할 필요가 있다
UnsupportedOperationException - 공유 모드가 지원되어 있지 않은 경우

isHeldExclusively

protected boolean isHeldExclusively()
현재의 (호출측의) thread에 관해서, 동기가 배타적으로 행해지는 경우는 true 를 돌려줍니다. 비대기 상태 AbstractQueuedLongSynchronizer.ConditionObject 메소드가 불려 갈 때 마다, 이 메소드가 불려 갑니다 (대기 상태의 메소드에서는 release(long) 가 불려 간다).

디폴트 구현은,UnsupportedOperationException 를 throw 합니다. 이 메소드는,AbstractQueuedLongSynchronizer.ConditionObject 메소드로 내부적에게만 불려 가기 (위해)때문에, 상태가 사용되지 않는 경우는 정의할 필요가 없습니다.

반환값:
동기가 배타적으로 행해지는 경우는 true, 그렇지 않은 경우는 false
예외:
UnsupportedOperationException - 상태가 지원되지 않는 경우

acquire

public final void acquire(long arg)
인터럽트를 무시해, 배타 모드로 가져옵니다. 한 번 이상 tryAcquire(long) 를 호출하는 것으로 구현되어 성공시에 복귀합니다. 그 이외의 경우, thread는 큐에 넣어져 대부분의 경우 블록 및 블록 해제를 몇번이나 반복해, 성공할 때까지 tryAcquire(long) 를 호출합니다. 이 메소드는,Lock.lock() 메소드의 구현에 사용할 수 있습니다.

파라미터:
arg - acquire 의 인수. 이 값은 tryAcquire(long) 에 송신되지만, 그 이외의 경우는 미해석이 되어, 임의의 값을 나타낼 수가 있다

acquireInterruptibly

public final void acquireInterruptibly(long arg)
                                throws InterruptedException 
배타 모드로 가져옵니다. 인터럽트가 발생했을 경우는, 중지합니다. 최초로 끼어들어 상태를 체크하고 나서 한 번 이상 tryAcquire(long) 를 호출하는 것으로 구현되어 성공시에 복귀합니다. 그 이외의 경우, thread는 큐에 넣어져 대부분의 경우 블록 및 블록 해제를 몇번이나 반복해, 성공할까 thread로 인터럽트가 발생할 때까지 tryAcquire(long) 를 호출합니다. 이 메소드는,Lock.lockInterruptibly() 메소드의 구현에 사용할 수 있습니다.

파라미터:
arg - acquire 의 인수. 이 값은 tryAcquire(long) 에 송신되지만, 그 이외의 경우는 미해석이 되어, 임의의 값을 나타낼 수가 있다
예외:
InterruptedException - 현재의 thread로 인터럽트가 발생했을 경우

tryAcquireNanos

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로 인터럽트가 발생했을 경우

release

public final boolean release(long arg)
배타 모드로 해제합니다. tryRelease(long) 가 true 를 돌려주는 경우, 1 개(살) 이상의 thread를 블록 해제하는 것으로 구현됩니다. 이 메소드는,Lock.unlock() 메소드의 구현으로 사용할 수 있습니다.

파라미터:
arg - release 의 인수. 이 값은 tryRelease(long) 에 송신되지만, 그 이외의 경우는 미해석이 되어, 임의의 값을 나타낼 수가 있다
반환값:
tryRelease(long) 로부터 반환되는 값

acquireShared

public final void acquireShared(long arg)
인터럽트를 무시해, 공유 모드로 가져옵니다. 최초로 한 번 이상 tryAcquireShared(long) 를 호출하는 것으로 구현되어 성공시에 복귀합니다. 그 이외의 경우, thread는 큐에 넣어져 대부분의 경우 블록 및 블록 해제를 몇번이나 반복해, 성공할 때까지 tryAcquireShared(long) 를 호출합니다.

파라미터:
arg - acquire 의 인수. 이 값은 tryAcquireShared(long) 에 송신되지만, 그 이외의 경우는 미해석이 되어, 임의의 값을 나타낼 수가 있다

acquireSharedInterruptibly

public final void acquireSharedInterruptibly(long arg)
                                      throws InterruptedException 
공유 모드로 가져옵니다. 최초로 끼어들어 상태를 체크하고 나서, 한 번 이상 tryAcquireShared(long) 를 호출하는 것으로 구현되어 성공시에 복귀합니다. 그 이외의 경우, thread는 큐에 넣어져 대부분의 경우 블록 및 블록 해제를 몇번이나 반복해, 성공할까 thread로 인터럽트가 발생할 때까지 tryAcquireShared(long) 를 호출합니다.

파라미터:
arg - acquire 의 인수. 이 값은 tryAcquireShared(long) 에 송신되지만, 그 이외의 경우는 미해석이 되어, 임의의 값을 나타낼 수가 있다
예외:
InterruptedException - 현재의 thread로 인터럽트가 발생했을 경우

tryAcquireSharedNanos

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로 인터럽트가 발생했을 경우

releaseShared

public final boolean releaseShared(long arg)
공유 모드로 해제합니다. tryReleaseShared(long) 가 true 를 돌려주는 경우, 1 개(살) 이상의 thread를 블록 해제하는 것으로 구현됩니다.

파라미터:
arg - release 의 인수. 이 값은 tryReleaseShared(long) 에 송신되지만, 그 이외의 경우는 미해석이 되어, 임의의 값을 나타낼 수가 있다
반환값:
tryReleaseShared(long) 로부터 반환되는 값

hasQueuedThreads

public final boolean hasQueuedThreads()
취득을 대기중의 thread가 존재할지 어떨지를 조회합니다. 언젠가는 끼어들어 및 타임 아웃에 의한 취소가 발생했을 경우,true 가 돌려주어져도 다른 thread가 취득을 실행하는 것은 보증되지 않습니다.

이 구현에서는, 이 조작은 일정한 시간에 복귀합니다.

반환값:
취득을 대기중외의 thread가 존재할 가능성이 있는 경우는 true

hasContended

public final boolean hasContended()
이 싱크로나이저의 취득으로 경합 하고 있는 thread가 존재할지 어떨지 (즉, acquire 메소드가 블록 되었는지 어떠했는지)를 조회합니다.

이 구현에서는, 이 조작은 일정한 시간에 복귀합니다.

반환값:
경합이 존재하는 경우는 true

getFirstQueuedThread

public final Thread  getFirstQueuedThread()
큐내의 최초의 (대기 시간의 가장 길다) thread를 돌려줍니다. 현재 큐에 thread가 들어가 있지 않은 경우는 null 를 돌려줍니다.

일반적으로, 이 구현에서는, 이 조작은 일정시간으로 복귀합니다. 다만, 다른 thread가 큐의 변경을 병행해 실행하고 있는 경우는, 경합에 의해 처리를 반복하는 경우가 있습니다.

반환값:
큐내의 최초의 (대기 시간의 가장 길다) thread. 현재 큐에 thread가 들어가 있지 않은 경우는 null

isQueued

public final boolean isQueued(Thread  thread)
지정된 thread가, 현재 큐에 들어가 있는 경우는 true 를 돌려줍니다.

이 구현은, 큐를 횡단(traverse) 해 지정된 thread의 존재를 판별합니다.

파라미터:
thread - thread
반환값:
지정된 thread가 큐에 들어가 있는 경우는 true
예외:
NullPointerException - thread가 null 의 경우

getQueueLength

public final int getQueueLength()
취득을 대기하고 있는 thread의 추정수를 돌려줍니다. 이 메소드가 내부의 데이터 구조를 횡단(traverse) 하고 있는 동안에도, thread수가 동적으로 변화하는 경우가 있기 (위해)때문에, 이 값은 추정에 지나지 않습니다. 이 메소드는, 동기의 제어용으로서가 아니고, 시스템 상태의 감시용으로서 설계되고 있습니다.

반환값:
취득을 대기하고 있는 thread의 추정수

getQueuedThreads

public final Collection <Thread > getQueuedThreads()
취득을 대기하고 있는 thread를 포함한 컬렉션을 돌려줍니다. 실제의 thread 세트는, 결과의 구축중에도 동적으로 변화할 가능성이 있기 (위해)때문에, 반환되는 컬렉션은 최선이 노력한 다음의 추정에 지나지 않습니다. 반환되는 컬렉션의 요소에는, 특정의 순서는 존재하지 않습니다. 이 메소드는, 보다 포괄적인 감시 기능을 제공하는 서브 클래스의 구축을 용이하게 하는 목적으로 설계되고 있습니다.

반환값:
thread의 컬렉션

getExclusiveQueuedThreads

public final Collection <Thread > getExclusiveQueuedThreads()
배타 모드로 취득하기 위해서 대기중의 thread를 포함한 컬렉션을 돌려줍니다. 이것은, 배타적 취득을 위해서(때문에) 대기중의 thread만을 돌려주는 것을 제외해서는,getQueuedThreads() 와 같은 프로퍼티을 보관 유지합니다.

반환값:
thread의 컬렉션

getSharedQueuedThreads

public final Collection <Thread > getSharedQueuedThreads()
공유 모드로 취득하기 위해서 대기중의 thread를 포함한 컬렉션을 돌려줍니다. 이것은, 공유적 취득을 위해서(때문에) 대기중의 thread만을 돌려주는 것을 제외해,getQueuedThreads() 와 같은 프로퍼티을 보관 유지합니다.

반환값:
thread의 컬렉션

toString

public String  toString()
싱크로나이저 및 그 상태를 식별하는 캐릭터 라인을 돌려줍니다. 상태는 괄호로 둘러싸여 캐릭터 라인 "State =" 에 이어 getState() 의 현재가, 및 큐가 빈 상태(empty)인가 어떤가에 응해 "nonempty" 또는 "empty" 가 포함됩니다.

오버라이드(override):
클래스 Object 내의 toString
반환값:
이 싱크로나이저 및 그 상태를 식별하는 캐릭터 라인

owns

public final boolean owns(AbstractQueuedLongSynchronizer.ConditionObject  condition)
지정된 ConditionObject 가 이 싱크로나이저를 락으로서 사용할지 어떨지를 조회합니다.

파라미터:
condition - 상태
반환값:
소유되는 경우는 true
예외:
NullPointerException - condition 가 null 의 경우

hasWaiters

public final boolean hasWaiters(AbstractQueuedLongSynchronizer.ConditionObject  condition)
이 싱크로나이저에 관련지을 수 있었던 지정 상태로 대기하고 있는 thread가 존재할지 어떨지를 조회합니다. 타임 아웃 및 인터럽트는 언제라도 발생할 가능성이 있기 (위해)때문에,true 가 돌려주어져도, 장래 signal 가 thread를 기동시키는 것은 보증되고 있지 않습니다. 이 메소드는, 주로 시스템 상태의 감시에 사용하는 목적으로 설계되고 있습니다.

파라미터:
condition - 상태
반환값:
대기중의 thread가 존재하는 경우는 true
예외:
IllegalMonitorStateException - 배타적 동기가 보관 유지되지 않는 경우
IllegalArgumentException - 지정된 상태가 이 싱크로나이저와 관련지을 수 있지 않은 경우
NullPointerException - condition 가 null 의 경우

getWaitQueueLength

public final int getWaitQueueLength(AbstractQueuedLongSynchronizer.ConditionObject  condition)
이 싱크로나이저에 관련지을 수 있었던 지정 상태로 대기하고 있는 thread의 추정수를 돌려줍니다. 타임 아웃 및 인터럽트의 발생할 가능성은 언제라도 존재하기 위해(때문에), 추정수는, 실제의 대기자수에 관한 상한을 나타내는에 지나지 않습니다. 이 메소드는, 동기의 제어용으로서가 아니고, 시스템 상태의 감시용으로서 설계되고 있습니다.

파라미터:
condition - 상태
반환값:
대기중의 thread의 추정수
예외:
IllegalMonitorStateException - 배타적 동기가 보관 유지되지 않는 경우
IllegalArgumentException - 지정된 상태가 이 싱크로나이저와 관련지을 수 있지 않은 경우
NullPointerException - condition 가 null 의 경우

getWaitingThreads

public final Collection <Thread > getWaitingThreads(AbstractQueuedLongSynchronizer.ConditionObject  condition)
이 싱크로나이저에 관련지을 수 있었던 지정 상태로 대기중의 thread를 포함한 컬렉션을 돌려줍니다. 실제의 thread 세트는, 결과의 구축중에도 동적으로 변화할 가능성이 있기 (위해)때문에, 반환되는 컬렉션은 최선이 노력한 다음의 추정에 지나지 않습니다. 반환되는 컬렉션의 요소에는, 특정의 순서는 존재하지 않습니다.

파라미터:
condition - 상태
반환값:
thread의 컬렉션
예외:
IllegalMonitorStateException - 배타적 동기가 보관 유지되지 않는 경우
IllegalArgumentException - 지정된 상태가 이 싱크로나이저와 관련지을 수 있지 않은 경우
NullPointerException - condition 가 null 의 경우

JavaTM Platform
Standard Ed. 6

버그의 보고와 기능의 요청
한층 더 자세한 API 레퍼런스 및 개발자 문서에 대해서는,Java SE 개발자용 문서를 참조해 주세요. 개발자전용의 상세한 해설, 개념의 개요, 용어의 정의, 버그의 회피책, 및 코드 실례가 포함되어 있습니다.

Copyright 2006 Sun Microsystems, Inc. All rights reserved. Use is subject to license terms . Documentation Redistribution Policy 도 참조해 주세요.