[解決済み] wait()とsleep()の違いについて
質問
とはどのような違いがあるのでしょうか?
wait()
と
sleep()
をThreadsに入れるのですか?
私の理解では
wait()
-の場合、スレッドはまだ実行中で、CPUサイクルを使用しますが
sleep()
-ingはCPUサイクルを消費しないのですか?
なぜ
ともに
wait()
と
sleep()
その実装は、より低いレベルでどのように異なるのでしょうか?
どのように解決するのか?
A
wait
を呼び出す別のスレッドによって起こされる可能性があります。
notify
を使用しているのに対し、待機しているモニター上で
sleep
はできません。また
wait
(そして
notify
) はブロック内で行わなければなりません。
synchronized
をモニタオブジェクト上で実行するのに対し
sleep
を使用しない。
Object mon = ...;
synchronized (mon) {
mon.wait();
}
この時点で、現在実行中のスレッドは、次のように待機します。 を解放し、モニタ . 別のスレッドでは
synchronized (mon) { mon.notify(); }
(同じ
mon
オブジェクトを実行すると、最初のスレッド (モニターで待機している唯一のスレッドと仮定) がウェイクアップします。
を呼び出すこともできます。
notifyAll
複数のスレッドがモニタ上で待機している場合、これは
すべて起動
. しかし、そのうちの1つのスレッドだけがモニターをつかむことができます(この場合、「1つのスレッドに1つしかない」ことを思い出してください。
wait
は
synchronized
ブロック)に移動し、続行します。他の人は、モニターのロックを取得できるまでブロックされます。
もう一つのポイントは
wait
について
Object
を呼び出すのに対して、それ自体(つまり、オブジェクトのモニタで待機する)を呼び出します。
sleep
について
Thread
.
さらにもう一点は
スプリアスウェイクアップ
から
wait
(すなわち、待機中のスレッドが明白な理由なく再開される)。次のようにします。
常に
wait
ある条件下で回転させながら
を次のようにします。
synchronized {
while (!condition) { mon.wait(); }
}
関連
-
Eclipseで "XXXX "の解決策を(型に)解決することができない
-
[解決済み] JavaにおけるHashMapとHashtableの違いは何ですか?
-
[解決済み] Javaにおけるpublic、protected、package-private、privateの違いは何ですか?
-
[解決済み] serialVersionUIDとは何ですか、またなぜそれを使用する必要がありますか?
-
[解決済み] プロセスとスレッドの違いは何ですか?
-
[解決済み] StringBuilderとStringBufferの違いについて
-
[解決済み] JDKとJREの違いは何ですか?
-
[解決済み] ウェイトとスリープの違い
-
[解決済み】JavaScript版sleep()とは?)
-
[解決済み】HashMap、LinkedHashMap、TreeMapの違いについて
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
スタイルシートとして解釈されるリソースが、MIMEタイプtext/htmlで転送される。
-
IllegalArgumentException この例外を解決する方法
-
Android Studio 3.1.2 で v4, v7 パッケージが見つからない シンボル 'AppCompatActivity' を解決できない
-
Intellij IDEAのエラー「CreateProcess error=2, system could not find specified file」に対する完璧な解決策です。
-
Spring BootのテストメソッドFailed to load ApplicationContextの問題を解決する
-
SocketTimeoutExceptionです。読み込みがタイムアウトしました
-
Exception: java.util.NoSuchElementException: 行が見つかりません
-
このラインで複数のマーカーを解決する方法
-
[解決済み] Thread.sleep(x)またはwait()を使用すると例外が発生します。
-
[解決済み] Javaでモニターって何?