Javaのwaitメソッドの使い方
Javaのwait()メソッドはObjectクラスのメソッドで、他のスレッドがnotify()やnotifyAll()メソッドで呼び出すまで、現在のスレッドを待機状態にします。wait()メソッドは通常、synchronizedキーワードと併用されます。
wait()メソッドは2つのオーバーロード形式があります。
- wait():現在のスレッドが待機状態となり、他のスレッドがnotify()またはnotifyAll()メソッドを呼び出すまで、待機を続けます。wait()メソッドは、synchronizedブロック内で呼び出す必要があります。
ネイティブな日本語で文章を言い換えてください。1つのオプションのみが必要です: 例コード:
synchronized(obj){
try{
obj.wait();
}catch(InterruptedException e){
e.printStackTrace();
}
}
- wait(long timeout) : 現在のスレッドは待機状態に入り、指定された時間が経過すると自動的に復帰します。指定された時間内に他のスレッドがnotify()またはnotifyAll()メソッドを呼び出さなかった場合、現在のスレッドは自動的に復帰します。
サンプルコード:
synchronized(obj){
try{
obj.wait(1000); // 等待1秒钟
}catch(InterruptedException e){
e.printStackTrace();
}
}
注意事項
- wait()メソッドはsynchronizedブロック内で呼び出さないと、IllegalMonitorStateException例外がスローされます。
- wait()メソッドは、現在のオブジェクトのロックを解放し、他のスレッドがsynchronizedブロックに入ることができるようにします。
- wait()メソッドは、偽のウェイクアップを避けるためにループ内で使用できます。
上記はwait()メソッドの基本的な使用方法であり、具体的な使い方は状況に応じて決定する必要があります。