- すべての実装されたインタフェース:
- Serializable
public abstract class AbstractQueuedLongSynchronizer extends AbstractOwnableSynchronizer implements Serializable
として保持されるAbstractQueuedSynchronizerAbstractQueuedSynchronizerとまったく同じ構造体、プロパティ、およびメソッドがありますが、状態関連のすべてのパラメータと結果は、intではなくlongとして定義されている点が異なります。 このクラスは、複数レベルのロックやバリアーといった64ビットの状態が必要なシンクロナイザの作成時に有用であることがあります。 
 使用上のノートや例については、AbstractQueuedSynchronizerを参照してください。
- 導入されたバージョン:
- 1.6
- 関連項目:
- 直列化された形式
- 
ネストされたクラスのサマリーネストされたクラス 修飾子と型 クラス 説明 classAbstractQueuedLongSynchronizer.ConditionObjectLock実装の基盤として機能するAbstractQueuedLongSynchronizerのCondition実装です。
- 
コンストラクタのサマリーコンストラクタ コンストラクタ 説明 AbstractQueuedLongSynchronizer()
- 
メソッドのサマリー修飾子と型 メソッド 説明 voidacquire(long arg)割込みを無視して、排他モードで取得します。voidacquireInterruptibly(long arg)排他モードで取得します。割込みが発生した場合は、中止します。voidacquireShared(long arg)割込みを無視して、共有モードで取得します。voidacquireSharedInterruptibly(long arg)共有モードで取得します。protected booleancompareAndSetState(long expect, long update)現在の状態値が予想される値に等しい場合、同期状態を指定された更新値に原子的に設定します。Collection<Thread>getExclusiveQueuedThreads()排他モードで取得するために待機中のスレッドを含むコレクションを返します。ThreadgetFirstQueuedThread()キュー内の最初の(待機時間のもっとも長い)スレッドを返します。現在キューにスレッドが入っていない場合はnullを返します。Collection<Thread>getQueuedThreads()パーミットの取得を待機しているスレッドを含むコレクションを返します。intgetQueueLength()パーミットの取得を待機しているスレッドの推定数を返します。Collection<Thread>getSharedQueuedThreads()共有モードで取得するために待機中のスレッドを含むコレクションを返します。protected longgetState()同期状態の現在値を返します。Collection<Thread>getWaitingThreads(AbstractQueuedLongSynchronizer.ConditionObject condition)このシンクロナイザに関連付けられた指定の状態で待機中のスレッドを含むコレクションを返します。intgetWaitQueueLength(AbstractQueuedLongSynchronizer.ConditionObject condition)このシンクロナイザに関連付けられた指定の状態で待機しているスレッドの推定数を返します。booleanhasContended()このシンクロナイザを取得しようとしているスレッドがあるかどうかを問い合わせます; つまり、取得メソッドがブロックされている場合です。booleanhasQueuedPredecessors()現在のスレッドより長いスレッドを待機中のスレッドが存在するかどうかを紹介します。booleanhasQueuedThreads()パーミットの取得を待機中のスレッドが存在するかどうかを照会します。booleanhasWaiters(AbstractQueuedLongSynchronizer.ConditionObject condition)このシンクロナイザに関連付けられた指定の状態で待機しているスレッドが存在するかどうかを照会します。protected booleanisHeldExclusively()現在の(呼出し側の)スレッドに関して、同期が排他的に行われる場合はtrueを返します。booleanisQueued(Thread thread)指定されたスレッドが、現在キューに入っている場合はtrueを返します。booleanowns(AbstractQueuedLongSynchronizer.ConditionObject condition)指定されたConditionObjectがこのシンクロナイザをロックとして使用するかどうかを照会します。booleanrelease(long arg)排他モードで解放します。booleanreleaseShared(long arg)共有モードで解放します。protected voidsetState(long newState)同期状態の値を設定します。StringtoString()シンクロナイザおよびその状態を識別する文字列を返します。protected booleantryAcquire(long arg)排他モードでの取得を試みます。booleantryAcquireNanos(long arg, long nanosTimeout)排他モードで取得を試みます。割込みが発生した場合は中止し、指定されたタイム・アウト時間が経過した場合は失敗します。protected longtryAcquireShared(long arg)共有モードでの取得を試みます。booleantryAcquireSharedNanos(long arg, long nanosTimeout)共有モードで取得を試みます。割込みが発生した場合は中止し、指定されたタイム・アウト時間が経過した場合は失敗します。protected booleantryRelease(long arg)排他モードでの解放を反映するように、状態の設定を試みます。protected booleantryReleaseShared(long arg)共有モードでの解放を反映するように、状態の設定を試みます。クラス java.util.concurrent.locks.AbstractOwnableSynchronizerで宣言されたメソッドgetExclusiveOwnerThread, setExclusiveOwnerThread
- 
コンストラクタの詳細- 
AbstractQueuedLongSynchronizerpublic AbstractQueuedLongSynchronizer()
 
- 
- 
メソッドの詳細- 
getStateprotected final long getState()同期状態の現在値を返します。 この操作は、volatile読込みのメモリー・セマンティクスを保持します。- 戻り値:
- 現在の状態値
 
- 
setStateprotected final void setState(long newState)同期状態の値を設定します。 この操作は、volatile書込みのメモリー・セマンティクスを保持します。- パラメータ:
- newState- 新規状態値
 
- 
compareAndSetStateprotected final boolean compareAndSetState(long expect, long update)現在の状態値が予想される値に等しい場合、同期状態を指定された更新値に原子的に設定します。 この操作は、volatile読み込みおよび書込みのメモリー・セマンティクスを保持します。- パラメータ:
- expect- 予想される値
- update- 新しい値
- 戻り値:
- 成功した場合はtruefalseは、実際の値が予想される値と等価ではないことを示す。
 
- 
tryAcquireprotected boolean tryAcquire(long arg)排他モードでの取得を試みます。 このメソッドは、オブジェクトが排他モードでの取得を許可する状態にあるかどうかを照会し、許可する状態にあれば取得します。このメソッドは常に取得を実行するスレッドにより呼び出されます。 このメソッドが失敗をレポートし、かつスレッドがキューに入れられていない場合、取得メソッドは、ほかのスレッドからの解放により信号が送信されるまでそのスレッドをキューに入れることができます。 これは、 Lock.tryLock()メソッドの実装に使用できます。デフォルト実装は、 UnsupportedOperationExceptionをスローします。- パラメータ:
- arg- acquireの引数。 この値は、常にacquireメソッドに渡される値、または状態待機へのエントリで保存される値になる。 それ以外の場合、この値は未解釈となり、任意の値を表すことができる。
- 戻り値:
- 成功した場合はtrue成功時には、このオブジェクトは取得済みである。
- 例外:
- IllegalMonitorStateException- 取得により、このシンクロナイザが不正な状態に置かれる場合。 同期が正しく機能するためには、この例外を一貫した方式でスローする必要がある。
- UnsupportedOperationException- 排他モードがサポートされていない場合
 
- 
tryReleaseprotected boolean tryRelease(long arg)排他モードでの解放を反映するように、状態の設定を試みます。このメソッドは、解放を実行するスレッドにより常に呼び出されます。 デフォルト実装は、 UnsupportedOperationExceptionをスローします。- パラメータ:
- arg- releaseの引数。 この値は、常にreleaseメソッドに渡される値、または状態待機へのエントリでの現在の状態値になる。 それ以外の場合、この値は未解釈となり、任意の値を表すことができる。
- 戻り値:
- 待機中の任意のスレッドが取得を試みることができるように、このオブジェクトが完全に解放された状態にある場合はtrue、そうでない場合はfalse。
- 例外:
- IllegalMonitorStateException- 解放により、このシンクロナイザが不正な状態に置かれる場合。 同期が正しく機能するためには、この例外を一貫した方式でスローする必要がある。
- UnsupportedOperationException- 排他モードがサポートされていない場合
 
- 
tryAcquireSharedprotected long tryAcquireShared(long arg)共有モードでの取得を試みます。 このメソッドは、オブジェクトが共有モードでの取得を許可する状態にあるかどうかを照会し、許可する状態にあれば取得します。このメソッドは常に取得を実行するスレッドにより呼び出されます。 このメソッドが失敗をレポートし、かつスレッドがキューに入れられていない場合、取得メソッドは、ほかのスレッドからの解放により信号が送信されるまでそのスレッドをキューに入れることができます。 デフォルト実装は、 UnsupportedOperationExceptionをスローします。- パラメータ:
- arg- acquireの引数。 この値は、常にacquireメソッドに渡される値、または状態待機へのエントリで保存される値になる。 それ以外の場合、この値は未解釈となり、任意の値を表すことができる。
- 戻り値:
- 失敗した場合は負の値。共有モードでの取得に成功したが、以後の共有モードでの取得に成功しない場合はゼロ。共有モードでの取得に成功し、以後の共有モードでの取得にも成功する可能性がある場合は正の値。正の値の場合、以後の待機スレッドで利用可能性をチェックする必要がある。 (3つの異なる戻り値のサポートにより、取得だけが時折排他的に動作するコンテキスト内でこのメソッドを使用することが可能になる。) 成功時には、このオブジェクトは取得済みである。
- 例外:
- IllegalMonitorStateException- 取得により、このシンクロナイザが不正な状態に置かれる場合。 同期が正しく機能するためには、この例外を一貫した方式でスローする必要がある。
- UnsupportedOperationException- 共有モードがサポートされていない場合
 
- 
tryReleaseSharedprotected boolean tryReleaseShared(long arg)共有モードでの解放を反映するように、状態の設定を試みます。このメソッドは、解放を実行するスレッドにより常に呼び出されます。 デフォルト実装は、 UnsupportedOperationExceptionをスローします。- パラメータ:
- arg- releaseの引数。 この値は、常にreleaseメソッドに渡される値、または状態待機へのエントリでの現在の状態値になる。 それ以外の場合、この値は未解釈となり、任意の値を表すことができる。
- 戻り値:
- このリリースの共有モードで待機中の取得(共有または排他)を許可できる場合はtrue、そうでない場合はfalse
- 例外:
- IllegalMonitorStateException- 解放により、このシンクロナイザが不正な状態に置かれる場合。 同期が正しく機能するためには、この例外を一貫した方式でスローする必要がある。
- UnsupportedOperationException- 共有モードがサポートされていない場合
 
- 
isHeldExclusivelyprotected boolean isHeldExclusively()現在の(呼出し側の)スレッドに関して、同期が排他的に行われる場合はtrueを返します。 このメソッドは、AbstractQueuedLongSynchronizer.ConditionObjectメソッドを呼び出すたびに呼び出されます。デフォルト実装は、 UnsupportedOperationExceptionをスローします。 このメソッドは、AbstractQueuedLongSynchronizer.ConditionObjectメソッドで内部的にのみ呼び出されるため、状態が使用されない場合は定義する必要がありません。- 戻り値:
- 同期が排他的に行われる場合はtrue、そうでない場合はfalse
- 例外:
- UnsupportedOperationException- 状態がサポートされない場合
 
- 
acquirepublic final void acquire(long arg)割込みを無視して、排他モードで取得します。 一度以上tryAcquire(long)を呼び出すことで実装され、成功時に復帰します。 それ以外の場合、スレッドはキューに入れられ、たいていの場合ブロックおよびブロック解除を何度も繰り返し、成功するまでtryAcquire(long)を呼び出します。 このメソッドは、Lock.lock()メソッドの実装に使用できます。- パラメータ:
- arg- acquireの引数。 この値は- tryAcquire(long)に送信されるが、それ以外の場合は未解釈となり、任意の値を表すことができる。
 
- 
acquireInterruptiblypublic final void acquireInterruptibly(long arg) throws InterruptedException排他モードで取得します。割込みが発生した場合は、中止します。 最初に割込みステータスをチェックしてから一度以上tryAcquire(long)を呼び出すことで実装され、成功時に復帰します。 それ以外の場合、スレッドはキューに入れられ、たいていの場合ブロックおよびブロック解除を何度も繰り返し、成功するかスレッドで割込みが発生するまでtryAcquire(long)を呼び出します。 このメソッドは、Lock.lockInterruptibly()メソッドの実装に使用できます。- パラメータ:
- arg- acquireの引数。 この値は- tryAcquire(long)に送信されるが、それ以外の場合は未解釈となり、任意の値を表すことができる。
- 例外:
- InterruptedException- 現在のスレッドで割込みが発生した場合
 
- 
tryAcquireNanospublic final boolean tryAcquireNanos(long arg, long nanosTimeout) throws InterruptedException排他モードで取得を試みます。割込みが発生した場合は中止し、指定されたタイム・アウト時間が経過した場合は失敗します。 最初に割込みステータスをチェックしてから一度以上tryAcquire(long)を呼び出すことで実装され、成功時に復帰します。 それ以外の場合、スレッドはキューに入れられ、たいていの場合ブロックおよびブロック解除を何度も繰り返し、成功するかスレッドで割込みが発生するかタイムアウト時間が経過するまでtryAcquire(long)を呼び出します。 このメソッドは、Lock.tryLock(long, TimeUnit)メソッドの実装に使用できます。- パラメータ:
- arg- acquireの引数。 この値は- tryAcquire(long)に送信されるが、それ以外の場合は未解釈となり、任意の値を表すことができる。
- nanosTimeout- 待機する最大ナノ秒数
- 戻り値:
- 取得した場合はtrue、タイム・アウトした場合はfalse
- 例外:
- InterruptedException- 現在のスレッドで割込みが発生した場合
 
- 
releasepublic final boolean release(long arg)排他モードで解放します。tryRelease(long)がtrueを返す場合、1つ以上のスレッドをブロック解除することで実装されます。 このメソッドは、Lock.unlock()メソッドの実装に使用できます。- パラメータ:
- arg- releaseの引数。 この値は- tryRelease(long)に送信されるが、それ以外の場合は未解釈となり、任意の値を表すことができる。
- 戻り値:
- tryRelease(long)から返される値
 
- 
acquireSharedpublic final void acquireShared(long arg)割込みを無視して、共有モードで取得します。 最初に一度以上tryAcquireShared(long)を呼び出すことで実装され、成功時に復帰します。 それ以外の場合、スレッドはキューに入れられ、たいていの場合ブロックおよびブロック解除を何度も繰り返し、成功するまでtryAcquireShared(long)を呼び出します。- パラメータ:
- arg- acquireの引数。 この値は- tryAcquireShared(long)に送信されるが、それ以外の場合は未解釈となり、任意の値を表すことができる。
 
- 
acquireSharedInterruptiblypublic final void acquireSharedInterruptibly(long arg) throws InterruptedException共有モードで取得します。 最初に割込みステータスをチェックしてから一度以上tryAcquireShared(long)を呼び出すことで実装され、成功時に復帰します。 それ以外の場合、スレッドはキューに入れられ、たいていの場合ブロックおよびブロック解除を何度も繰り返し、成功するかスレッドで割込みが発生するまでtryAcquireShared(long)を呼び出します。- パラメータ:
- arg- acquireの引数。 この値は- tryAcquireShared(long)に送信されるが、それ以外の場合は未解釈となり、任意の値を表すことができる。
- 例外:
- InterruptedException- 現在のスレッドで割込みが発生した場合
 
- 
tryAcquireSharedNanospublic final boolean tryAcquireSharedNanos(long arg, long nanosTimeout) throws InterruptedException共有モードで取得を試みます。割込みが発生した場合は中止し、指定されたタイム・アウト時間が経過した場合は失敗します。 最初に割込みステータスをチェックしてから一度以上tryAcquireShared(long)を呼び出すことで実装され、成功時に復帰します。 それ以外の場合、スレッドはキューに入れられ、たいていの場合ブロックおよびブロック解除を何度も繰り返し、成功するかスレッドで割込みが発生するかタイムアウト時間が経過するまでtryAcquireShared(long)を呼び出します。- パラメータ:
- arg- acquireの引数。 この値は- tryAcquireShared(long)に送信されるが、それ以外の場合は未解釈となり、任意の値を表すことができる。
- nanosTimeout- 待機する最大ナノ秒数
- 戻り値:
- 取得した場合はtrue、タイム・アウトした場合はfalse
- 例外:
- InterruptedException- 現在のスレッドで割込みが発生した場合
 
- 
releaseSharedpublic final boolean releaseShared(long arg)共有モードで解放します。tryReleaseShared(long)がtrueを返す場合、1つ以上のスレッドをブロック解除することで実装されます。- パラメータ:
- arg- releaseの引数。 この値は- tryReleaseShared(long)に送信されるが、それ以外の場合は未解釈となり、任意の値を表すことができる。
- 戻り値:
- tryReleaseShared(long)から返される値
 
- 
hasQueuedThreadspublic final boolean hasQueuedThreads()パーミットの取得を待機中のスレッドが存在するかどうかを照会します。 いずれかの時点で割り込みおよびタイム・アウトによる取消しが発生した場合、trueが返されてもほかのスレッドが取得を実行することは保証されません。- 戻り値:
- 取得を待機中のほかのスレッドが存在する可能性がある場合はtrue
 
- 
hasContendedpublic final boolean hasContended()このシンクロナイザを取得しようとしているスレッドがあるかどうかを問い合わせます; つまり、取得メソッドがブロックされている場合です。この実装では、この操作は一定の時間で復帰します。 - 戻り値:
- 競合が存在する場合はtrue
 
- 
getFirstQueuedThreadpublic final Thread getFirstQueuedThread()キュー内の最初の(待機時間のもっとも長い)スレッドを返します。現在キューにスレッドが入っていない場合はnullを返します。通常、この実装では、この操作は一定時間で復帰します。ただし、ほかのスレッドがキューの変更を並行して実行している場合は、競合により処理を繰り返す場合があります。 - 戻り値:
- キュー内の最初の(待機時間のもっとも長い)スレッド。現在キューにスレッドが入っていない場合はnull
 
- 
isQueuedpublic final boolean isQueued(Thread thread)指定されたスレッドが、現在キューに入っている場合はtrueを返します。この実装は、キューをトラバースして指定されたスレッドの存在を判別します。 - パラメータ:
- thread- スレッド
- 戻り値:
- 指定されたスレッドがキューに入っている場合はtrue
- 例外:
- NullPointerException- スレッドがnullの場合
 
- 
hasQueuedPredecessorspublic final boolean hasQueuedPredecessors()現在のスレッドより長いスレッドを待機中のスレッドが存在するかどうかを紹介します。このメソッドの呼出しは、次と同等です(ただし、効率的である場合があります)。 getFirstQueuedThread() != Thread.currentThread() && hasQueuedThreads()いずれかの時点で割り込みおよびタイム・アウトによる取消しが発生した場合、 trueが返されても、ほかのスレッドが現在のスレッドよりも前に取得を実行することは保証されません。 同様に、このメソッドがfalseを返したあと、キューが空であることが原因で、別のスレッドがエンキューの競争に勝つ可能性もあります。このメソッドは、バージ(barging) を回避するために公平なシンクロナイザによって使用されるためのものです。 そのようなシンクロナイザの tryAcquire(long)メソッドはfalseを返し、このメソッドがtrueを返す場合、そのtryAcquireShared(long)メソッドは負の値を返すはずです(これが再入可能な取得である場合を除く)。 たとえば、公平で再入可能な排他モードのシンクロナイザのtryAcquireメソッドは、次のようになります。protected boolean tryAcquire(long arg) { if (isHeldExclusively()) { // A reentrant acquire; increment hold count return true; } else if (hasQueuedPredecessors()) { return false; } else { // try to acquire normally } }- 戻り値:
- 現在のスレッドよりも前にキューに入れられたスレッドがある場合はtrue、現在のスレッドがキューの先頭にあるか、キューが空の場合はfalse
- 導入されたバージョン:
- 1.7
 
- 
getQueueLengthpublic final int getQueueLength()パーミットの取得を待機しているスレッドの推定数を返します。 このメソッドが内部のデータ構造をトラバースしている間にも、スレッド数が動的に変化する場合があるため、この値は推定に過ぎません。 このメソッドは、同期の制御用としてではなく、システム状態の監視用として設計されています。- 戻り値:
- 取得を待機しているスレッドの推定数
 
- 
getQueuedThreadspublic final Collection<Thread> getQueuedThreads()パーミットの取得を待機しているスレッドを含むコレクションを返します。 実際のスレッド・セットは、結果の構築中にも動的に変化する可能性があるため、返されるコレクションは最善の努力を払った上での推定に過ぎません。 返されるコレクションの要素には、特定の順序は存在しません。 このメソッドは、より包括的な監視機能を提供するサブクラスの構築を容易にする目的で設計されています。- 戻り値:
- スレッドのコレクション
 
- 
getExclusiveQueuedThreadspublic final Collection<Thread> getExclusiveQueuedThreads()排他モードで取得するために待機中のスレッドを含むコレクションを返します。 これは、排他的取得のために待機中のスレッドのみを返すことを除いては、getQueuedThreads()と同じプロパティを保持します。- 戻り値:
- スレッドのコレクション
 
- 
getSharedQueuedThreadspublic final Collection<Thread> getSharedQueuedThreads()共有モードで取得するために待機中のスレッドを含むコレクションを返します。 これは、共有的取得のために待機中のスレッドのみを返すことを除いては、getQueuedThreads()と同じプロパティを保持します。- 戻り値:
- スレッドのコレクション
 
- 
toStringpublic String toString()シンクロナイザおよびその状態を識別する文字列を返します。 状態は括弧で囲まれ、文字列"State ="に続いてgetState()の現在値、およびキューが空かどうかに応じて"nonempty"または"empty"が含まれます。
- 
ownspublic final boolean owns(AbstractQueuedLongSynchronizer.ConditionObject condition)指定されたConditionObjectがこのシンクロナイザをロックとして使用するかどうかを照会します。- パラメータ:
- condition- 状態
- 戻り値:
- 所有される場合はtrue
- 例外:
- NullPointerException- 状態がnullの場合
 
- 
hasWaiterspublic final boolean hasWaiters(AbstractQueuedLongSynchronizer.ConditionObject condition)このシンクロナイザに関連付けられた指定の状態で待機しているスレッドが存在するかどうかを照会します。 タイム・アウトおよび割込みはいつでも発生する可能性があるため、trueが返されても、将来signalがスレッドを起動させることは保証されていません。 このメソッドは、主にシステム状態の監視に使用する目的で設計されています。- パラメータ:
- condition- 状態
- 戻り値:
- 待機中のスレッドが存在する場合はtrue
- 例外:
- IllegalMonitorStateException- 排他的同期が保持されない場合
- IllegalArgumentException- 指定された状態がこのシンクロナイザと関連付けられていない場合
- NullPointerException- 状態がnullの場合
 
- 
getWaitQueueLengthpublic final int getWaitQueueLength(AbstractQueuedLongSynchronizer.ConditionObject condition)このシンクロナイザに関連付けられた指定の状態で待機しているスレッドの推定数を返します。 タイム・アウトおよび割り込みの発生する可能性はいつでも存在するため、推定数は、実際の待機者数に関する上限を示すに過ぎません。 このメソッドは、同期の制御用としてではなく、システム状態の監視用として設計されています。- パラメータ:
- condition- 状態
- 戻り値:
- 待機中のスレッドの推定数
- 例外:
- IllegalMonitorStateException- 排他的同期が保持されない場合
- IllegalArgumentException- 指定された状態がこのシンクロナイザと関連付けられていない場合
- NullPointerException- 状態がnullの場合
 
- 
getWaitingThreadspublic final Collection<Thread> getWaitingThreads(AbstractQueuedLongSynchronizer.ConditionObject condition)このシンクロナイザに関連付けられた指定の状態で待機中のスレッドを含むコレクションを返します。 実際のスレッド・セットは、結果の構築中にも動的に変化する可能性があるため、返されるコレクションは最善の努力を払った上での推定に過ぎません。 返されるコレクションの要素には、特定の順序は存在しません。- パラメータ:
- condition- 状態
- 戻り値:
- スレッドのコレクション
- 例外:
- IllegalMonitorStateException- 排他的同期が保持されない場合
- IllegalArgumentException- 指定された状態がこのシンクロナイザと関連付けられていない場合
- NullPointerException- 状態がnullの場合
 
 
-