問題タブ [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.

0 投票する
7 に答える
125163 参照

java - JavaのThread.sleepはいつInterruptedExceptionをスローしますか?

JavaのThread.sleepはいつInterruptedExceptionをスローしますか? 無視しても安全ですか?私はマルチスレッドを行っていません。いくつかの操作を再試行する前に、数秒間待ちたいだけです。

0 投票する
3 に答える
4118 参照

java - Java & スレッド: 中断された例外 & BlockingQueue の take() メソッドを適切に使用する方法

キューに何もないときに take() が呼び出されると、正確にはどうなりますか。APIはメソッドが待機すると言っていますが、それはアイテムがキューに入るまでCPUが空/空ではないことをチェックすることを意味しますか、それともスレッドが譲歩して割り込みによって目覚めることを意味しますか? 前者の場合、キューが空であるかどうかを確認し、thread.yield() を呼び出してプロセッサ時間を放棄するかどうかを確認したいと思うでしょう。私の質問は、yield を呼び出す必要があるのか​​、それとも内部メカニズムでそれを処理するのかということです。

第二に、中断された例外は何を意味するのですか? 私が正しく理解している場合、スレッド A がこのメソッドを実行していて入力を待っていて、別のスレッド B が threadA.interrupt() を呼び出した場合、スレッド A は中断された例外をキャッチし、おそらく実行を一時停止します。それはそれについて正しい考え方ですか?

0 投票する
3 に答える
6563 参照

java - Thread.currentThread.interrupt()を呼び出すためにInterruptedExceptionをキャッチするのはなぜですか?

効果的なJava(275ページ)には、次のコードセグメントがあります。

中断された例外をキャッチして、それを再発生させるための使用は何ですか?飛ばしてみませんか?

0 投票する
5 に答える
11472 参照

java - BlockingQueue.take はどのような条件下で割り込み例外をスローしますか?

別のスレッドによって生成されたアイテムを消費するスレッドがあるとします。その run メソッドは次のとおりです。inQueue は BlockingQueue です。

さらに、別のスレッドは、この実行中のスレッドを中断することによって、これ以上作業項目がないことを通知します。次の作業項目を取得するためにブロックする必要がない場合、 take() は中断された例外をスローします。つまり、プロデューサーがワーク キューへの書き込みが完了したことを通知した場合、誤って inQueue にいくつかの項目を残したり、割り込みを逃したりする可能性はありますか?

0 投票する
2 に答える
4888 参照

java - Thread.isInterrupted は機能しませんが、Thread.interrupted は機能します

次のプログラムは、問題を示しています (最新の JVM など)。

0 投票する
3 に答える
1555 参照

java - 誰が私のスレッドを中断しますか?

InterruptedException の機能とスローされる理由を理解しています。しかし、私のアプリケーションでは、アプリケーションSwingUtilities.invokeAndWait()だけが知っているスレッドを待っているときにそれを取得し、アプリケーションがスレッドを呼び出すことはThread.interrupt()なく、スレッドの参照を誰にも渡すことはありません。

だから私の質問は: 誰が私のスレッドを中断しますか?

伝える方法はありますか?InterruptedException に、割り込みを要求するスレッドの名前が含まれていない理由はありますか?

これを行うフレームワークまたはライブラリである可能性があることを読みました。次を使用しますが、スレッドを中断する理由が思いつきません。

  • 休止状態
  • Log4J
  • Mysql コネクタ
0 投票する
3 に答える
65559 参照

java - Future.get()はどのような場合にExecutionExceptionまたはInterruptedExceptionをスローしますか

私のコードスニペット:

InterruptedExceptionコード内でとをどのように処理する必要がExecutionExceptionありますか?

そして、どのような場合に、これらの例外がスローされますか?

0 投票する
2 に答える
1806 参照

java - 他のスレッドが続行できるように、デッドロックされた単一の Java スレッドを中断、強制終了、または巻き戻す (同期ロックを解放する) 方法はありますか?

バグが原因で、単純な/消耗可能なスレッドが継続したいスレッドでデッドロックされている長時間実行プロセスがあるため、別の方法では再現が難しい最終レポートを実行できます。

もちろん、将来の実行のためにバグを修正することは、適切な最終的な解決策です。もちろん、そのようなスレッドの強制的な割り込み/強制終了/停止は本質的に安全ではなく、他の予測できない不整合を引き起こす可能性があります。(私はすべての標準的な警告とその理由を熟知しています。)

それでも、唯一の代替手段はJVMプロセスを強制終了し、より長い手順を実行することであり、最終レポートの完成度が低下するため、面倒/非推奨/危険/危険/1回限りの手法がまさに私が望むものです試してみる。

JVM は Ubuntu 上の Sun の 1.6.0_16 64 ビットであり、消耗スレッドはオブジェクト モニターのロックを待機しています。

正確なスレッドに向けられた OS シグナルは、消耗スレッドで InterruptedException を作成できますか?

gdb でアタッチし、JVM データを直接改ざんしたり、JVM プロシージャを呼び出したりすると、消耗スレッドが保持するオブジェクト モニタを強制的に解放できますか?

Thread.interrupt()別のスレッドからの aInterruptedExceptionは、ロック待機中のフレームからaを生成しますか? (少し努力すれば、実行中のシステムに任意の Beanshell スクリプトを挿入できます。)

Thread.stop()JMXまたはその他のリモートインジェクションメソッドを介して非推奨を送信できますか?

どんなアイデアでも、「危険」であればあるほど良いのです! そして、あなたの提案が同様の状況での個人的な経験でうまくいったなら、最高です!

0 投票する
2 に答える
3005 参照

java - Java ベースの割り込み可能なタイマー スレッドが必要

ターゲット デバイス (スマートフォン) でスクリプトを実行し、while ループで stdout メッセージを待機しているメイン プログラムがあります。ただし、この特定のケースでは、stdout のハートビート メッセージの一部は、ほぼ 45 秒から 1 分間隔で配置される可能性があります。

何かのようなもの:

そのため、必要なスリープ ウィンドウで stdout から行を読み取った後、新しい割り込み可能なスレッドを開始できるようにしたいと考えています。新しい行を読み取れるようになったら、中断/停止(プロセスの強制終了に問題がある)、標準出力テキストの改行を処理してプロセスを再起動できるようにしたいと考えています。

そして、タイマー ウィンドウ (たとえば 45 秒) 内で行を読み取ることができないイベントが発生した場合、while ループから抜け出す方法も必要です。

私はすでにthread.run、thread.interruptアプローチを試しました。しかし、新しいスレッドを強制終了して開始するのに問題があります。

これが最善の方法ですか、それとも明らかな何かが欠けていますか?

0 投票する
17 に答える
17916 参照

java - Swing アプリケーションを終了するときにときどき InterruptedException が発生する

最近、クアッドコア ハイパースレッディング プロセッサ (i7) を搭載したより強力なコンピューターにコンピューターを更新したため、多くの実際の同時実行が可能になりました。現在、開発中のアプリケーション (Swing GUI を使用) を終了 () すると、次のエラーが発生することがありますSystem.exit(0)

ええと、それがより並行性に対応したハードウェアで発生し始め、スレッドに関係しており、時折発生することを考えると、明らかにある種のタイミングの問題です. しかし問題は、スタック トレースが非常に短いことです。私が持っているのは上記のリストだけです。私自身のコードはまったく含まれていないため、バグがどこにあるかを推測するのはやや困難です。

誰かが前にこのようなことを経験したことがありますか? それを解決する方法はありますか?

編集: Swingアプリケーションを終了するのSystem.exit(0)は「汚れている」かもしれないのでEXIT_ON_CLOSE、アプリケーションが終了したときに重大なことは何も起こらないようにしたいので、メインフレームをに設定したくないので、それが実行されるようにメカニズムを追加しましたdispose()を呼び出す前のメイン フレームのメソッドSystem.exit(0)。これでかなりきれいになったはずですが、時折例外が発生します。System.exit(0)が呼び出された後に発生します。dispose()問題なく動作します。つまり、シャットダウン フックから来ている必要があります。

配列Windowをループしてすべての s を明示的に破棄しようとしましたが (所有者のないs などが含まれています)、違いはありませんでした。この問題は、「クリーンネス」(つまり、終了する前にネイティブの画面リソースを明示的に解放する) とはほとんど関係がないようです。それは別のものですが、何ですか?Window.getWindows()Dialog

編集2:デフォルトのクローズ操作を設定してEXIT_ON_CLOSEも違いはありません。http://www.google.com/search?q=sun.java2d.Disposer.run(Disposer.java:125)でいくつかのバグ レポートが見つかったため、これは Sun の Java2D 実装のバグである可能性があります。このようなバグは、実際にはほとんど無害であるため、長い間修正されない可能性があると想像できます。シャットダウン フックからの例外は、他の人を傷つけることはほとんどありません。stderrこれが GUI アプリで発生することを考えると、コンソールまたはログに送信されない限り、例外は認識されません。