問題タブ [interrupted-exception]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - wait() でブロック中にスレッドが中断されるとどうなりますか?
wait() は、別のスレッドによって同じオブジェクトで notify/nofityAll が呼び出されるまでモニターを解放する同期コンテキストでのみ呼び出すことができるという事実を考慮すると、
スレッド A が wait() でブロックされ、その結果、スレッド B がロックを取得するとします。スレッド A を中断すると、制御はすぐにスレッド A に移りますか? その場合、InterrupException を処理する try catch ブロックが同期コンテキスト内にあり、一度に 1 つのスレッドしかモニターを保持できないため、スレッド B はどうなりますか? スレッド A の実行が完了するまでブロック状態に移行する必要がありますか?
前もって感謝します
java - クラス Condition の await メソッドが InterruptedException をスローしない
Java SE 6 の Condition クラスの await メソッドに奇妙な問題があります。問題は、別のスレッドによる割り込み中に await メソッドが常に例外をスローするとは限らないことです。
ドキュメントには、次の場合に IE がスローされると書かれています。
... 他のスレッドが現在のスレッドを中断し、スレッド中断の中断がサポートされています ...
このサブセンテンスを解釈する方法: 「スレッド中断の中断がサポートされています」
例外をスローしないことは不可能のようです。同様の問題がありましたか?
linux - Linuxカーネルがトラップゲートを使用してdivide_error例外を処理するのはなぜですか?
カーネル 2.6.11.5 では、除算ゼロ例外ハンドラは次のように設定されます。
「Understanding The Linux Kernel」によると、Intel トラップ ゲートにはユーザー モード プロセスからアクセスできません。ただし、ユーザー モード プロセスでもdivide_error
. では、なぜ Linux はこのように実装するのでしょうか?
[編集] IDT エントリの DPL 値を 0 に設定するため、質問はまだ未解決であると思いますset_trap_gate()
。これは、CPL=0 (カーネルを読み取る) コードのみがそれを実行できることを意味します。ユーザーモード:
でコンパイルされましたgcc div0.c
。そしての出力./a.out
は次のとおりです。
浮動小数点例外 (コアダンプ)
したがって、これは 0 除算のトラップ コードによって処理されたようには見えません。
java - スレッドが中断されるかどうかを確認するためだけにスリープする目的は何でしょうか?
以下を含むメソッドを持つJavaコードに出くわしました。
これの目的は何でしょうか?戻り値は、計算を続行するかどうかを決定するために使用されます。スレッドが 1 秒間中断されたかどうかを確認するためだけに 1 秒間スリープしようとするのは奇妙に思えます。
このメソッドを呼び出すコードは、thread.isInterrupted() と同じことを達成しようとしていますか? それが何をしようとしているにせよ、より良い方法はありますか?
waitForSeconds の呼び出しは、ループ内ではなく、別のメソッドの先頭に表示されるため、このコードが割り込みのチェックに加えて何らかの目的で 1 秒間待機することを意図している場合、間違った方法でチェックインしているように見えます。場所。睡眠をループの近くに置いたほうがいいのではないでしょうか?
最後の質問については、代わりにここに返信してください。
java - ハングしたプロセスのために Java でスレッドを中断する
次のようなスレッドがある場合:
while ループで何が起こるかreadLine()
というと、外部プロセスからの入力を期待しているため、ハングすることがあります。その場合、私がやろうとしているのは、タイマーをセットアップすることですinterrupt this thread t
。t.interrupt();
try ブロックの後にキャッチしようとするInterruptedException
と、コンパイル時エラーが発生します。このシナリオで誰かに教えてもらえますか? 割り込み例外をキャッチするにはどうすればよいですか?
ありがとうございました
java - 並行性-Futureをキャンセルせずに中断する
フューチャーをキャンセルせずに中断する方法はありますか?
boolean cancel(boolean mayInterruptIfRunning)
このタスクの実行をキャンセルしようとします。タスクがすでに完了している場合、すでにキャンセルされている場合、またはその他の理由でキャンセルできなかった場合、この試行は失敗します。成功し、cancelが呼び出されたときにこのタスクが開始されていない場合、このタスクは実行されません。タスクがすでに開始されている場合、mayInterruptIfRunningパラメーターは、タスクを停止するためにこのタスクを実行しているスレッドを中断する必要があるかどうかを決定します。
割り込みをキャプチャするには、割り込み例外を適切にキャッチするか、Runnable / Callableメソッド内のisInterrupted()メソッドを確認する必要があります。
しかし、Futureインターフェースを使用して実行中のFutureを中断する方法はありません
すべてのスレッドがエグゼキュータサービスプールにあるため、誰もthread.interrupt()を実行できません。フューチャーがキャンセルされたとき、またはスレッドプールが終了したときにのみ割り込みが発生すると想定されているのはそのためですか?
Futureインターフェースに割り込みメソッドがない理由を理解しようとしています。どんな助けでも大歓迎です
java - Process.waitFor() および java.lang.InterruptedException を使用した Java マルチスレッド
これは私がやっていることの疑似コードです:
使用中に InterruptedException が発生しています
Process.waitFor()
指図。シングルスレッドのJavaアプリだったらよかったのに。しかし、今ではマルチスレッドアプリになっています。
java.lang.InterruptedException
その特定の行で。Java doc は次のように述べています。
例外: InterruptedException - 現在のスレッドが待機中に別のスレッドによって割り込まれた場合、待機は終了し、InterruptedException がスローされます。
あるスレッドが待機している間に別のスレッドも待機している可能性があるため、それが何を意味するかを理解していますが、この例外をどのように乗り越えれば、waitFor() を使用できるようになります。
どんな助けでも感謝します。コードを投稿する必要はありませんでしたが、必要な場合はお知らせください。
ExecutorService のコード:
java - Java: スレッドへの参加が機能しない場合: 中断するか続行しますか?
スレッドへの参加がうまくいかない場合はどうすればよいですか?
その場合、中断することをお勧めしますか (まだ結合されていない他のスレッドではどうなりますか?)、または少なくとも残りのスレッドに結合してから続行する必要がありますか?
アドバイスありがとう!
==>結論: 特定のスレッド t への参加を再試行するか、この特定のスレッド t を中断して続行する必要があります。
この解決策についてどう思いますか?「t.interrupt()」を実行するのは正しいですか、それとも Thread.currentThread().interrupt(); にする必要がありますか? ?
ありがとう!:-)
java - Java InterruptedException - スレッドが中断されることが何を意味するのか、またはなぜ中断されるのかについて混乱しています
同期ブロック内でこの例外を取得し続けます。同期ブロックでは、同期されている同じオブジェクトで待機を呼び出します。スレッドが最初に中断されるとはどういう意味ですか? 第二に、これが発生する通常のシナリオは何ですか? 何が起こっているのか、または私が何をすべきかについて何かアドバイスはありますか?
python - システム コールの割り込みをスレッドに伝播する
2 つの Python スレッドを実行しています ( import threading
)。どちらもopen()
通話でブロックされています。実際、彼らは名前付きパイプを開いて書き込みをしようとするため、誰かが名前付きパイプから読み込もうとするまでブロックするのが通常の動作です。
要するに、次のようになります。
^C を入力するopen()
と、メイン スレッドが中断されます ( IOError
errno == 4 で発生します)。
私の問題は次のとおりです。t
スレッドはまだ待機しており、割り込み動作を伝播させて、それも発生させたいと考えていIOError
ます。