[解決済み】java.lang.Thread.interrupt()は何をするのですか?
質問
を説明してください。
java.lang.Thread.interrupt()
を呼び出すとどうなりますか?
解決方法は?
Thread.interrupt()
は、ターゲットスレッドの中断された状態/フラグを設定します。 そして、そのターゲットスレッドで実行されているコードは、中断されたステータスをポーリングし、適切に処理してもかまいません。 のようなブロックするメソッドもあります。
Object.wait()
は、中断された状態を直ちに消費し、適切な例外を投げるかもしれません(通常
InterruptedException
)
Javaでの割り込みはプリエンプティブではありません。 別の言い方をすれば、割り込みを適切に処理するためには、両方のスレッドが 協力する必要があります。 ターゲットスレッドが割り込みの状態をポーリングしない場合、割り込みは事実上無視されます。
ポーリングは
Thread.interrupted()
このメソッドは、現在のスレッドの割り込み状態を返し、その割り込みフラグをクリアします。 通常、そのスレッドは InterruptedException を投げるようなことをします。
編集(Thiloのコメントより)。 APIメソッドの中には、割り込み処理を内蔵しているものがあります。 私の頭の中では、これが含まれています。
-
Object.wait()
,Thread.sleep()
およびThread.join()
-
ほとんどの
java.util.concurrent
構造体 -
Java NIO (ただし、java.ioではない) で、これは
InterruptedException
を使用し、代わりにClosedByInterruptException
.
EDIT (より トーマス・ポーニン への回答 全く同じ質問 をご覧ください。)
スレッドの中断は、スレッドを優しくなでる方法です。スレッドに終了のチャンスを与えるために使用されます。
すっきり
とは対照的に
Thread.stop()
というのは、アサルトライフルでスレッドを撃っているようなものです。
関連
-
[解決済み] JavaでInputStreamを読み込んでStringに変換するにはどうすればよいですか?
-
[解決済み] JavaにおけるHashMapとHashtableの違いは何ですか?
-
[解決済み] なぜパスワードにはStringではなくchar[]が好まれるのですか?
-
[解決済み] serialVersionUIDとは何ですか、またなぜそれを使用する必要がありますか?
-
[解決済み] JavaBeanとは何ですか?
-
[解決済み] C++11では、標準化されたメモリモデルが導入されました。その意味するところは?そして、C++プログラミングにどのような影響を与えるのでしょうか?
-
[解決済み] ランダムな文字列を使用するこのコードは、なぜ "hello world" と表示されるのですか?
-
[解決済み] Could not find or load main class "とはどういう意味ですか?
-
[解決済み] シンクロナイズド」とはどういう意味ですか?
-
[解決済み】Apache Camelとは一体何ですか?
最新
-
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 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] ストリングビルダー.イコール Java
-
[解決済み] javaで部分クラスを実装する方法
-
[解決済み] java.util.concurrent.ExecutionException 例外をどのように処理しますか?
-
[解決済み] Oracle DB : java.sql.SQLException: 閉じた接続
-
[解決済み] 警告: コンテキスト初期化中に例外が発生 - 更新の試みはキャンセルされました。
-
[解決済み] 一部の入力ファイルが非推奨のAPIを使用またはオーバーライドしている
-
[解決済み] Androidのコールバックとは何ですか?重複
-
[解決済み] javascriptでExpression言語を使うには?
-
[解決済み] スリーピング中のスレッドが割り込まれ、データベースへの接続が失われる
-
[解決済み] Eclipseでクラスとそれに対応するファイルの名前を変更する方法は?