|
JavaTM Platform Standard Ed. 6 |
|||||||||
前のクラス 次のクラス | フレームあり フレームなし | |||||||||
概要: 入れ子 | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド |
java.lang.Object java.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 |
getFirstQueuedThread()
キュー内の最初の (待機時間のもっとも長い) スレッドを返します。 |
Collection<Thread> |
getQueuedThreads()
パーミットの取得を待機しているスレッドを含むコレクションを返します。 |
int |
getQueueLength()
パーミットの取得を待機しているスレッドの推定数を返します。 |
Collection<Thread> |
getSharedQueuedThreads()
共有モードで取得するために待機中のスレッドを含むコレクションを返します。 |
protected long |
getState()
同期状態の現在値を返します。 |
Collection<Thread> |
getWaitingThreads(AbstractQueuedLongSynchronizer.ConditionObject condition)
このシンクロナイザに関連付けられた指定の状態で待機中のスレッドを含むコレクションを返します。 |
int |
getWaitQueueLength(AbstractQueuedLongSynchronizer.ConditionObject condition)
このシンクロナイザに関連付けられた指定の状態で待機しているスレッドの推定数を返します。 |
boolean |
hasContended()
このシンクロナイザの取得で競合しているスレッドが存在するかどうか (つまり、acquire メソッドがブロックされたかどうか) を照会します。 |
boolean |
hasQueuedThreads()
パーミットの取得を待機中のスレッドが存在するかどうかを照会します。 |
boolean |
hasWaiters(AbstractQueuedLongSynchronizer.ConditionObject condition)
このシンクロナイザに関連付けられた指定の状態で待機しているスレッドが存在するかどうかを照会します。 |
protected boolean |
isHeldExclusively()
現在の (呼び出し側の) スレッドに関して、同期が排他的に行われる場合は true を返します。 |
boolean |
isQueued(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)
このメソッドは常に取得を実行するスレッドにより呼び出されます。このメソッドが失敗をレポートし、かつスレッドがキューに入れられていない場合、取得メソッドは、ほかのスレッドからの解放により信号が送信されるまでそのスレッドをキューに入れることができます。これは、Lock.tryLock()
メソッドの実装に使用できます。
デフォルト実装は、UnsupportedOperationException
をスローします。
arg
- acquire の引数。この値は、常に acquire メソッドに渡される値、または状態待機へのエントリで保存される値になる。それ以外の場合、この値は未解釈となり、任意の値を表すことができる
true
。成功時には、このオブジェクトは取得済みである
IllegalMonitorStateException
- 取得により、このシンクロナイザが不正な状態に置かれる場合。同期が正しく機能するためには、この例外を一貫した方式でスローする必要がある
UnsupportedOperationException
- 排他モードがサポートされていない場合protected boolean tryRelease(long arg)
このメソッドは、解放を実行するスレッドにより常に呼び出されます。
デフォルト実装は、UnsupportedOperationException
をスローします。
arg
- release の引数。この値は、常に release メソッドに渡される値、または状態待機へのエントリでの現在の状態値になる。それ以外の場合、この値は未解釈となり、任意の値を表すことができる
true
、そうでない場合は false
IllegalMonitorStateException
- 解放により、このシンクロナイザが不正な状態に置かれる場合。同期が正しく機能するためには、この例外を一貫した方式でスローする必要がある
UnsupportedOperationException
- 排他モードがサポートされていない場合protected long tryAcquireShared(long arg)
このメソッドは常に取得を実行するスレッドにより呼び出されます。このメソッドが失敗をレポートし、かつスレッドがキューに入れられていない場合、取得メソッドは、ほかのスレッドからの解放により信号が送信されるまでそのスレッドをキューに入れることができます。
デフォルト実装は、UnsupportedOperationException
をスローします。
arg
- acquire の引数。この値は、常に acquire メソッドに渡される値、または状態待機へのエントリで保存される値になる。それ以外の場合、この値は未解釈となり、任意の値を表すことができる
IllegalMonitorStateException
- 取得により、このシンクロナイザが不正な状態に置かれる場合。同期が正しく機能するためには、この例外を一貫した方式でスローする必要がある
UnsupportedOperationException
- 共有モードがサポートされていない場合protected boolean tryReleaseShared(long arg)
このメソッドは、解放を実行するスレッドにより常に呼び出されます。
デフォルト実装は、UnsupportedOperationException
をスローします。
arg
- release の引数。この値は、常に release メソッドに渡される値、または状態待機へのエントリでの現在の状態値になる。それ以外の場合、この値は未解釈となり、任意の値を表すことができる
true
、そうでない場合は false
IllegalMonitorStateException
- 解放により、このシンクロナイザが不正な状態に置かれる場合。同期が正しく機能するためには、この例外を一貫した方式でスローする必要がある
UnsupportedOperationException
- 共有モードがサポートされていない場合protected boolean isHeldExclusively()
true
を返します。非待機状態の AbstractQueuedLongSynchronizer.ConditionObject
メソッドが呼び出されるごとに、このメソッドが呼び出されます(待機状態のメソッドでは release(long)
が呼び出される)。
デフォルト実装は、UnsupportedOperationException
をスローします。このメソッドは、AbstractQueuedLongSynchronizer.ConditionObject
メソッドで内部的にのみ呼び出されるため、状態が使用されない場合は定義する必要がありません。
true
、そうでない場合は false
UnsupportedOperationException
- 状態がサポートされない場合public final void acquire(long arg)
tryAcquire(long)
を呼び出すことで実装され、成功時に復帰します。それ以外の場合、スレッドはキューに入れられ、たいていの場合ブロックおよびブロック解除を何度も繰り返し、成功するまで tryAcquire(long)
を呼び出します。このメソッドは、Lock.lock()
メソッドの実装に使用できます。
arg
- acquire の引数。この値は tryAcquire(long)
に送信されるが、それ以外の場合は未解釈となり、任意の値を表すことができるpublic final void acquireInterruptibly(long arg) throws InterruptedException
tryAcquire(long)
を呼び出すことで実装され、成功時に復帰します。それ以外の場合、スレッドはキューに入れられ、たいていの場合ブロックおよびブロック解除を何度も繰り返し、成功するかスレッドで割り込みが発生するまで tryAcquire(long)
を呼び出します。このメソッドは、Lock.lockInterruptibly()
メソッドの実装に使用できます。
arg
- acquire の引数。この値は tryAcquire(long)
に送信されるが、それ以外の場合は未解釈となり、任意の値を表すことができる
InterruptedException
- 現在のスレッドで割り込みが発生した場合public 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
- 現在のスレッドで割り込みが発生した場合public final boolean release(long arg)
tryRelease(long)
が true を返す場合、1 つ以上のスレッドをブロック解除することで実装されます。このメソッドは、Lock.unlock()
メソッドの実装で使用できます。
arg
- release の引数。この値は tryRelease(long)
に送信されるが、それ以外の場合は未解釈となり、任意の値を表すことができる
tryRelease(long)
から返される値public final void acquireShared(long arg)
tryAcquireShared(long)
を呼び出すことで実装され、成功時に復帰します。それ以外の場合、スレッドはキューに入れられ、たいていの場合ブロックおよびブロック解除を何度も繰り返し、成功するまで tryAcquireShared(long)
を呼び出します。
arg
- acquire の引数。この値は tryAcquireShared(long)
に送信されるが、それ以外の場合は未解釈となり、任意の値を表すことができるpublic final void acquireSharedInterruptibly(long arg) throws InterruptedException
tryAcquireShared(long)
を呼び出すことで実装され、成功時に復帰します。それ以外の場合、スレッドはキューに入れられ、たいていの場合ブロックおよびブロック解除を何度も繰り返し、成功するかスレッドで割り込みが発生するまで tryAcquireShared(long)
を呼び出します。
arg
- acquire の引数。この値は tryAcquireShared(long)
に送信されるが、それ以外の場合は未解釈となり、任意の値を表すことができる
InterruptedException
- 現在のスレッドで割り込みが発生した場合public final boolean tryAcquireSharedNanos(long arg, long nanosTimeout) throws InterruptedException
tryAcquireShared(long)
を呼び出すことで実装され、成功時に復帰します。それ以外の場合、スレッドはキューに入れられ、たいていの場合ブロックおよびブロック解除を何度も繰り返し、成功するか、スレッドで割り込みが発生するか、タイムアウト時間が経過するまで tryAcquireShared(long)
を呼び出します。
arg
- acquire の引数。この値は tryAcquireShared(long)
に送信されるが、それ以外の場合は未解釈となり、任意の値を表すことができるnanosTimeout
- 待機する最大ナノ秒数
true
、タイムアウトした場合は false
InterruptedException
- 現在のスレッドで割り込みが発生した場合public final boolean releaseShared(long arg)
tryReleaseShared(long)
が true を返す場合、1 つ以上のスレッドをブロック解除することで実装されます。
arg
- release の引数。この値は tryReleaseShared(long)
に送信されるが、それ以外の場合は未解釈となり、任意の値を表すことができる
tryReleaseShared(long)
から返される値public final boolean hasQueuedThreads()
true
が返されてもほかのスレッドが取得を実行することは保証されません。
この実装では、この操作は一定の時間で復帰します。
true
public final boolean hasContended()
この実装では、この操作は一定の時間で復帰します。
true
public final Thread getFirstQueuedThread()
null
を返します。
通常、この実装では、この操作は一定時間で復帰します。ただし、ほかのスレッドがキューの変更を並行して実行している場合は、競合により処理を繰り返す場合があります。
null
public final boolean isQueued(Thread thread)
この実装は、キューをトラバースして指定されたスレッドの存在を判別します。
thread
- スレッド
true
NullPointerException
- スレッドが 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()
の現在値、およびキューが空かどうかに応じて "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 2009 Sun Microsystems, Inc. All rights reserved. Use is subject to license terms. Documentation Redistribution Policy も参照してください。