|
nanoJBlend | |||||||||
| 前のクラス 次のクラス | フレームあり フレームなし | |||||||||
| 概要: 入れ子 | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド | |||||||||
java.lang.Object
public class Object
Object クラスはクラス階層のルートクラスです。
全てのクラスにとって Object はスーパークラスであり、配列を含む全てのオブジェクトは Object のメソッドを実装しています。
| コンストラクタの概要 | |
|---|---|
Object()
Object オブジェクトを生成します。 |
|
| メソッドの概要 | |
|---|---|
boolean |
equals(Object obj)
指定されたオブジェクトとこのオブジェクトが等しいかどうか判定します。 |
Class<?> |
getClass()
このオブジェクトの実行時クラスを返します。 |
int |
hashCode()
このオブジェクトのハッシュコードを返します。 |
void |
notify()
このオブジェクトのモニタで待ち状態にあるひとつのスレッドを起床させます。 |
void |
notifyAll()
このオブジェクトのモニタで待ち状態にあるすべてのスレッドを起床させます。 |
String |
toString()
このオブジェクトの文字列表現を返します。 |
void |
wait()
他のスレッドがこのオブジェクトの notify メソッドまたは notifyAll メソッドを呼び出すまで、現在のスレッドを待ち状態にします。 |
void |
wait(long timeout)
他のスレッドがこのオブジェクトの notify メソッドまたは notifyAll メソッドを呼び出す、または指定された時間が経過するまで、現在のスレッドを待ち状態にします。 |
| コンストラクタの詳細 |
|---|
public Object()
Object オブジェクトを生成します。
| メソッドの詳細 |
|---|
public final void wait(long timeout)
throws InterruptedException
notify メソッドまたは notifyAll メソッドを呼び出す、または指定された時間が経過するまで、現在のスレッドを待ち状態にします。
このメソッドを呼び出すには、現在のスレッドはこのオブジェクトのモニタを獲得している必要があります。
このメソッドは現在のスレッドTをこのオブジェクトの待機セットに入れます、次にこのオブジェクトに対する同期要求をすべて放棄します。 スレッドTはスレッドスケジューリングの対象から外れ、以下の4つのうちのどれかが起きるまで休眠状態に入ります。
notify メソッドを呼び出し、スレッドTが起床させられるスレッドとして選ばれる。notifyAll メソッドを呼び出す。interrupt メソッドを呼び出す。timeout に指定された時間が経過する。
timeout がゼロの場合、指定された時間は考慮されず、スレッドTは notify/notifyAll で通知を受けるまで待機する。
これらのうちのどれかの事象が発生すると、スレッドTは待機セットからはずされて、スレッドスケジューリングの対象に復活します。
スレッドは、通常どおり、このオブジェクトで同期する権利をめぐって他のスレッドと競合します。
このオブジェクトのコントロールを獲得すると、このオブジェクトに対する同期要求は wait メソッドを呼び出した時点の状態に復帰されます。
次にスレッドTの wait メソッドの呼び出しが返ります。
メソッドから戻った時点で、オブジェクトとスレッドTそれぞれの同期状態は wait メソッドを呼び出した時点と同じ状態になっています。
スレッドは通知、タイムアウト、割り込みによってではなく、「偽の目覚め」現象で起床する可能性があります。これはまれにしか発生しませんが、アプリケーションは期待するスレッドの起床条件が成立したかどうかを判定して、もし成立していなければ再度 wait するようにして、「偽の目覚め」に対してガードする必要があります。すなわち、 wait は以下のようなループ中に実行する必要があります
synchronized (obj) {
while (<期待する条件が成立していない場合>)
obj.wait(timeout);
... // 状況に合わせた処理を実行する
}
もし現在のスレッドが待ち状態にあるときに他のスレッドによって割り込まれた場合、 InterruptedException がスローされます。
この例外は、このオブジェクトのロックの状態が上述したように復元されてからスローされます。
wait メソッドは現在のスレッドをこのオブジェクトの待機セットに入れますが、このオブジェクトに対するロックだけを解除します。現在のスレッドが同期しているかもしれない他のオブジェクトのロックは、現在のスレッドが待機状態にあるかぎり保持されたままです。
このオブジェクトのモニタを獲得したスレッドだけがこのメソッドを呼び出すべきです。
スレッドがオブジェクトのモニタのオーナーになる方法について notify メソッドの説明を参照してください。
timeout - 待機する最大時間(ミリ秒)。
0xFFFFFFFFL より大きな値は 0xFFFFFFFFL (約49日)に制限されます。
IllegalArgumentException - timeout が負の場合
IllegalMonitorStateException - このオブジェクトのモニタを獲得していないスレッドが呼び出した場合
InterruptedException - このメソッドを呼び出して待ち状態にあるスレッドに対して他のスレッドが割り込みをかけた場合notify(),
notifyAll()
public final void wait()
throws InterruptedException
notify メソッドまたは notifyAll メソッドを呼び出すまで、現在のスレッドを待ち状態にします。
このメソッドは wait(0) の呼び出しと等価です。
IllegalMonitorStateException - このオブジェクトのモニタを獲得していないスレッドが呼び出した場合
InterruptedException - このメソッドを呼び出して待ち状態にあるスレッドに対して他のスレッドが割り込みをかけた場合wait(long),
notify(),
notifyAll()public final void notify()
wait メソッドを呼び出してオブジェクトのモニタで待ち状態に入ります。
このメソッドを呼び出した現在のスレッドがこのオブジェクトのロックを放棄するまで、起床させられたスレッドは処理を進めることができません。起床させられたスレッドは、このオブジェクトで同期する権利を要求している他のスレッドがあれば、通常どおりそれらと競合します。起床させられたスレッドは、このオブジェクトをロックする次のスレッドとなる、いかなる有利なまたは不利な立場にもありません。
このオブジェクトのモニタを獲得しているスレッドだけがこのメソッドを呼び出すべきです。以下のどれかによって、スレッドはオブジェクトのモニタを獲得できます。
synchronized インスタンスメソッドを実行するsynchronized 文の本体部分を実行するClass 型のオブジェクトに対して、そのクラスの synchronized static メソッドを実行する任意の時点において一つのスレッドだけがオブジェクトのモニタを所有できます。
IllegalMonitorStateException - このオブジェクトのモニタを獲得していないスレッドが呼び出した場合public final void notifyAll()
wait メソッドを呼び出してオブジェクトのモニタで待ち状態に入ります。
このメソッドを呼び出した現在のスレッドがこのオブジェクトのロックを放棄するまで、起床させられたスレッドは処理を進めることができません。起床させられたスレッドは、このオブジェクトで同期する権利を要求している他のスレッドがあれば、通常どおりそれらと競合します。起床させられたスレッドは、このオブジェクトをロックする次のスレッドとなる、いかなる有利なまたは不利な立場にもありません。
このオブジェクトのモニタを獲得しているスレッドだけがこのメソッドを呼び出すべきです。
オブジェクトのモニタを獲得する方法について、 notify メソッドの説明を参照してください。
IllegalMonitorStateException - このオブジェクトのモニタを獲得していないスレッドが呼び出した場合public String toString()
getClass().getName()
public boolean equals(Object obj)
equals メソッドは非 null であるオブジェクト参照について以下の等価関係を実装します。
null の参照値 x について、 x.equals(x) は true を返す。null の参照値 x,y について、 x.equals(y) が true を返す場合に限って y.equals(x) も true を返す。null の参照値 x,y,z について、 x.equals(y) および y.equals(z) が true を返す場合、 z.equals(x) も true を返す。null の参照値 x,y について、それらのオブジェクトの内容が変わらない前提で、 x.equals(y) が返す値は時間の推移によって変化しない。
null の参照値xについて、 x.equals(null) は false を返す。
Object クラスの equals メソッドの実装では、非 null の参照値 x,y について、 x および y が同じオブジェクトを参照している場合にだけ true を返します。
このメソッドをオーバーライドする場合、 hashCode の一般規約「 equals(Object) メソッドが true を返すオブジェクト同士は同じハッシュコードを持たなければならない」に従うために hashCode メソッドをオーバーライドする必要があることに注意してください。
obj - 比較するオブジェクト
this == obj のとき true 、それ以外は falsepublic int hashCode()
equals メソッドで使用されるオブジェクト間の比較に使用する情報が変わらないことを前提に、あるnanoアプリケーションの実行期間中の同じオブジェクトに対する hashCode メソッドの呼び出しは一貫して同じ整数値を返さなくてはならない。ただし、この整数値は同じアプリケーションの別の実行時において同じ値である必要はない。equals(Object) メソッドで同じであると判定される場合、それらのオブジェクトの hashCode メソッドが返す値は同一でなくてはならない。equals(Object) メソッドで等しくないと判定された二つのオブジェクトについて hashCode メソッドが返す値は必ずしも異なった値である必要はない。ただし、異なる値が生成されるほうがハッシュテーブルのパフォーマンスを向上させる可能性がある。
public final Class<?> getClass()
Class オブジェクトは、それが表すクラスの、 static synchronized で修飾されるメソッドによってロックされるオブジェクトです。
java.lang.Class オブジェクトです。
|
nanoJBlend | |||||||||
| 前のクラス 次のクラス | フレームあり フレームなし | |||||||||
| 概要: 入れ子 | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド | |||||||||