|
|||||||||
前のクラス 次のクラス | フレームあり フレームなし | ||||||||
概要: 入れ子 | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド |
java.lang.Objectmy_util.Semaphore
同時に複数のスレッドが共用的に獲得できるセマフォです。 また、一つだけのスレッドが専有的に獲得することもできます。 あるスレッドから専有的に獲得されている間は、他のスレッドは セマフォ獲得できず (待機動作指定されている場合) タイムアウト制御 された待機動作を行います。
コンストラクタにスレッドを指定することで、あらかじめ獲得済みの状態 になっているセマフォを作成することもできます。 その際に共用的に獲得するか占有的に獲得するのかについても 指定できます。
スレッド間で共有するオブジェクト (共有オブジェクト) を コンストラクタに指定することでセマフォに関連付けることもできます。
BinSemaphore
フィールドの概要 | |
static int |
DEFAULT_CNT_OF_SHARING_OWNERS
同時にセマフォを獲得できるスレッド数の既定値 (= 16) です。 |
static int |
INFINITE
セマフォ獲得のために無限に待つ際のタイムアウト値 (= 0) です。 |
static int |
MIN_CNT_OF_OWNERS
同時にセマフォを獲得できるスレッド数の最小値 (= 1) です。 |
コンストラクタの概要 | |
Semaphore()
明示的なスレッド間共有オブジェクトが指定されていない、 どのスレッドからも獲得されていないセマフォを作成します。 |
|
Semaphore(int max_sharers)
共用的な獲得を同時に行えるスレッド数を指定され、 明示的なスレッド間共有オブジェクトが指定されていない、 どのスレッドからも獲得されていないセマフォを作成します。 |
|
Semaphore(java.lang.Object o)
明示的なスレッド間共有オブジェクトを指定され、 どのスレッドからも獲得されていないセマフォを作成します。 |
|
Semaphore(java.lang.Object o,
int max_sharers)
明示的なスレッド間共有オブジェクトと 共用的な獲得を同時に行えるスレッド数を指定され、 どのスレッドからも獲得されていないセマフォを作成します。 |
|
Semaphore(java.lang.Thread me,
boolean sharing,
java.lang.Object o)
同時にセマフォを共用的に獲得できるスレッド数が DEFAULT_CNT_OF_SHARING_OWNERS で既定とされる値で、
me スレッドから専有的に獲得され、
明示的なスレッド間共有オブジェクトを指定されたセマフォを
作成します。
|
|
Semaphore(java.lang.Thread me,
boolean sharing,
java.lang.Object o,
int max_sharers)
引数 me で指定されたスレッドからあらかじめ獲得された状態で セマフォを作成します。 |
|
Semaphore(java.lang.Thread me,
java.lang.Object o)
明示的なスレッド間共有オブジェクトを指定され、 me スレッドから専有的に獲得されたセマフォを作成します。 |
|
Semaphore(java.lang.Thread me,
java.lang.Object o,
int max_sharers)
明示的なスレッド間共有オブジェクトと 共用的なセマフォ獲得を同時に行えるスレッド数を指定され、 me スレッドから専有的に獲得されたセマフォを作成します。 |
メソッドの概要 | |
java.lang.Object |
get_exclusive_object(java.lang.Thread me)
セマフォに関連付けられたスレッド間共有オブジェクトを取得する。 |
boolean |
leave(java.lang.Thread me)
獲得したセマフォを解放する。 |
boolean |
take(java.lang.Thread me,
boolean blocking)
タイムアウト動作を行わず例外も投げないように、 専有的なセマフォ獲得を行う。 |
boolean |
take(java.lang.Thread me,
boolean sharing,
boolean blocking)
タイムアウト動作を行わず例外も投げないように、 専有的または共用的なセマフォ獲得を行う。 |
boolean |
take(java.lang.Thread me,
boolean sharing,
boolean blocking,
long timeout)
me スレッドからのセマフォを獲得を試みる。 |
クラス java.lang.Object から継承したメソッド |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
フィールドの詳細 |
public static final int DEFAULT_CNT_OF_SHARING_OWNERS
public static final int MIN_CNT_OF_OWNERS
public static final int INFINITE
コンストラクタの詳細 |
public Semaphore(java.lang.Thread me, boolean sharing, java.lang.Object o, int max_sharers)
me
- セマフォをあらかじめ獲得するスレッド。
null が指定された場合、どのスレッドからも獲得されて
いないセマフォが作成されますsharing
- me スレッドがセマフォをあらかじめ獲得する際の
モードを指定します。true ならば他のスレッドからも
同時獲得が可能な共用的な獲得を行い、false ならば
他スレッドからは同時に獲得できない専有的な獲得を
行いますo
- セマフォに明示的に関連付ける
スレッド間共有オブジェクト。
null が指定された場合、共有オブジェクトと関連付け
られていないセマフォが作成されますmax_sharers
- 共用的な獲得を同時に行えるスレッド数を
指定します。
MIN_CNT_OF_OWNERS
よりも小さな値を指定してはいけません。public Semaphore(java.lang.Thread me, boolean sharing, java.lang.Object o)
DEFAULT_CNT_OF_SHARING_OWNERS
で既定とされる値で、
me スレッドから専有的に獲得され、
明示的なスレッド間共有オブジェクトを指定されたセマフォを
作成します。
new Semaphore(me, sharing, o, DEFAULT_CNT_OF_SHARING_OWNERS);
と同じです。
public Semaphore(java.lang.Thread me, java.lang.Object o, int max_sharers)
public Semaphore(java.lang.Thread me, java.lang.Object o)
public Semaphore(java.lang.Object o, int max_sharers)
public Semaphore(java.lang.Object o)
public Semaphore(int max_sharers)
public Semaphore()
メソッドの詳細 |
public boolean take(java.lang.Thread me, boolean sharing, boolean blocking, long timeout) throws java.lang.Exception, TimeoutException
me
- スレッド獲得を行うスレッド。sharing
- 共用的獲得 (true) と専有的獲得 (false)
を指定するblocking
- 獲得できない場合に待機状態に入る (true)
か否か (false) を指定するtimeout
- 獲得できない場合の待機タイムアウト時間をミリ秒数
で指定する。
1 未満の値を指定した場合、タイムアウト動作は
行わない。
MIN_CNT_OF_OWNERS
未満の値を設定していたTimeoutException
- 待機タイムアウトした場合。
例外メッセージは
"Semaphore.take(): Timeout (ミリ秒数)"
java.lang.InterruptedException
- me スレッドが他のスレッドから
interrupt() メソッド呼び出しで割り込まれた場合。
java.lang.Exception
public boolean take(java.lang.Thread me, boolean sharing, boolean blocking)
public boolean take(java.lang.Thread me, boolean blocking)
public java.lang.Object get_exclusive_object(java.lang.Thread me) throws java.lang.Exception
me
- スレッド間共有オブジェクトを取得するスレッド
java.lang.Exception
- me スレッドがセマフォ獲得をしていない
場合。例外メッセージは
"Semaphore: This thread has not taken this
semaphore."
java.lang.Exception
- コンストラクタで共用的な獲得を同時に
行うスレッド数 max_sharers を
MIN_CNT_OF_OWNERS
未満に指定していた場合。例外メッセージは
"Semaphore: Constructor had taken the
illegal `max_sharers' argument, yet"public boolean leave(java.lang.Thread me)
me
- セマフォを獲得しているスレッド
MIN_CNT_OF_OWNERS
未満の値を設定していた
|
|||||||||
前のクラス 次のクラス | フレームあり フレームなし | ||||||||
概要: 入れ子 | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド |