0

一定時間寝て、その間モニターを離す必要があります。それを達成する方法は?タイマーか何かを待つかもしれませんか?

アップデート

私はサウンド処理を実装していますが、時間的に非常に進んでいる場合は、ストリームの読み取り/書き込みを遅らせる必要があります。私は2つの一般的なアプローチがあると思います:(1)大きな進歩が来るのを待つ(2)時が来るまでそれをロックするための特別なモニターとタイマーを持っている。

4

3 に答える 3

3

wait() を使用できますが、それはモニターではなく、1 つのモニターのみを解放します。

あなたの質問から、多くの設計上の問題が示唆されています。理想的にはあなた

  • 一度に複数のモニターをロックするべきではありません。
  • 代わりに同時実行ライブラリを使用してください。
  • 任意の時間待機するべきではありません。
  • 一時的にロックを解除してはいけません。これを行う必要がないように、他のモデルを使用できます。例えば俳優モデル。
于 2012-10-08T08:21:45.273 に答える
0

この機能が現在利用可能かどうかはわかりません。理由は

1)スレッドがロックを解放すると、経過時間(x秒など)後に確実にロックが返されることを保証できません。JVM 自体は、このように設計されていません。

2) Wait() メソッドは、ミリ秒単位の時間を受け入れるようにオーバーロードされていますが、実装は、待機が呼び出されるとすぐにロックが解放されることを確認するだけです。経過時間の後にロックが返されることを保証するものではありません。

なぜそのような機能が必要なのですか? 必要のないことをしているに違いないと思います。

于 2012-10-08T08:24:01.933 に答える
0

メソッド sleep() はロックを取得する必要がないので、何を解放したいですか?どのようにモニターをロックしますか?

于 2012-10-08T08:30:08.750 に答える