問題タブ [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.
exception - 例外と割り込み
例外と割り込みの違いを探していたときに、 SOでこの質問の割り込みと例外を見つけました...
いくつかの回答は適切ではありませんでした (少なくともアセンブリ レベルでは):
「例外はソフトウェア版の割り込み」 でもソフトウェア割り込みは存在する!!
「割り込みは非同期だが、例外は同期」 そうですか?
「定期的に割り込みが発生する」
「割り込みはハードウェア実装のトラップ、例外はソフトウェア実装」 同上!
これらの答えのいくつかが正しかったかどうかを確認する必要があります。また、誰かがより良い答えを提供できれば幸いです...
ありがとう!
java - Java OpenGL(JOGL)アプリを正常にシャットダウンします
JOGLコンポーネントを備えたアプリケーションがあります。System.exit(0)を使用してシャットダウンすると、例外が頻繁に発生します。
Swingアプリケーションを終了するときに、この質問Occasional InterruptedExceptionが発生しましたが、デーモン以外のスレッドが実行されていません。基になるJOGLコードがSwingイベントキューにイベントを継続的に配置しているのではないかと思います。これは、swingアプリがイベントキューが空の場合にのみ適切にシャットダウンするため、このエラーを引き起こす可能性があります。
よりクリーンにシャットダウンする方法はありますか?どういうわけかJOGLメインループを停止するかもしれません(私はサードパーティのツールであるnasa worldwindを使用しているので、アプリを実行しているメインのアニメーターに必ずしもアクセスできるとは限りません)。
編集:これはopenGLの問題ではなかったことがわかりました。OpenGLは適切にシャットダウンされていて、実行していたシャットダウンフックで競合が発生しました。ありがとう。
assembly - 割り込みゲートまたはトラップゲートをいつ使用するか?
Intelマニュアルに示されているように、割り込みゲートとトラップゲートの両方を使用してハンドラルーチンにアクセスできます。また、一部の例外は、割り込みとベクトル番号を共有することさえあります。そのような共有ベクトルがCPUによっていつ検出されるのか、CPUはそれが例外を表すのか、割り込みを表すのかをどうやって知ることができるのでしょうか。
私は次のことの間で論理について少し混乱しています:
IDTのゲートタイプの決定
ベクトルが例外を表すのか割り込みを表すのかを判断する
どちらがどちらを決定しますか?
私は自分自身を明確にしたと思います...
アップデート1
nosの返信ありがとうございます。どのベクトルが割り込みまたはトラップを表すかをCPUに指示する必要があるということですか?CPUが割り込みとトラップに関してEFLAGS[IF]を異なる方法で処理することを知っていますが、CPUはこの決定を行う方法をどのように知っていますか?CPUは、ベクトルに対応するIDTエントリのタイプフィールドに基づいて決定を下しますか?それとも、システムがどのように接続されているかに依存し、それに応じてIDTエントリのタイプを設定する必要がありますか?つまり、タイプファイルは完全に私たちのイラストですか、それともCPUに不可欠ですか?
および関連する質問:コールゲート、割り込みゲート、トラップゲートの違いは?
java - JavaでのInterruptedExceptionの処理
次の取り扱い方法の違いは何InterruptedException
ですか?それを行うための最良の方法は何ですか?
また
編集:これら2つがどのシナリオで使用されているかも知りたいです。
java - Future.get() は常に InterruptedException で中断されます
Java の Future.get() に奇妙な問題があります。常に InterruptedException で返されますが、奇妙なことに、例外の原因が null であるため、誰が私を中断したのかわかりません..
get() を呼び出す前にチェックし、Future が実行しなければならない仕事は既に完了しているため、さらに悪化します。
以下の出力を担当するコードを次に示します。f は Futureであり、 callable は Agent が実際には関連しない HashMap を返します。印刷行が多すぎる場合は申し訳ありませんが、できるだけ多くの情報を提供しようとしています。callable からの call メソッドは、今のところ単純なSystem.out.println("Hola soy agente")
もので、後でわかるように出力されます。つまり、callable が例外を引き起こさなかったことを意味します。
コードは次のとおりです。
そして出力
呼び出し可能オブジェクトをスレッドプールに送信する場所を確認したい場合は、これがそのコードになります
その後、この Set を次のように反復処理します
java - Thread.sleep() によってスローされた InterruptedException の不適切な処理を示すのに適したサンプル プログラムはどれですか?
私は InterruptedException について読み回してきましたが、すべての場合に適切に処理するための特効薬の解決策がないことはすぐに明らかです。
私がまだ見ていないのは、例外が不適切に処理された場合に何が問題になるかを示すサンプル コードです。もちろん、一部の影響 (スレッドの枯渇など) は実証するのが難しいことは理解しています。の適切な使用方法を示すことに限定したいと思いますThread.sleep()
。
このためのやや現実的なサンプル プログラムをどのように設計しますか?
これまでの私のアイデアは次のとおりです。
応答性の低下を示す簡単な GUI アプリケーションを作成します。UI スレッドと、いくつかのブロッキング タスクを実行するための単純なスレッド プールがあります。スレッド プール マネージャーは、実行中のスレッドの中断状態をチェックして管理します。swallowed
InterruptedException
によってプールのスレッドが不足するため、アプリケーションの応答が遅くなります。これは、マネージ スレッドとアンマネージ スレッドでスリープする場合のさまざまな処理戦略を指摘するのに役立ちます。
ガベージとスリープを作成するスレッドがたくさんあります。スレッドには、中断されたときに中断された状態を復元するスレッドと、そうでない (例外を飲み込む) スレッドの 2 種類があります。次に、メモリの少ない JVM でアプリケーションを実行し、(できれば) 例外を飲み込むとガベージ コレクションが抑制されるか、オーバーヘッドが増加することを示します (呼び出し間の間隔が長いため)。
これらのアイデアは理にかなっていますか?他の(おそらくもっと簡単な)アイデアはありますか?
boost - 割り込みが無効になっているときにboost::threadを中断する
boost :: threadsを使用しているときに、この中断の問題に遭遇しました。スレッドBのスレッドAからboost::thread_interruptを実行すると、Bで割り込みが無効になっているときに(boost :: this_thread :: disable_interrupts di)、割り込みが失われたように見えます。つまり、割り込みを有効にした後でboost :: thread ::interruption_point()を設定しても、boost::thread_interrupted例外はスローされません。
これは予想される動作ですか、それとも私は何か間違ったことをしていますか?
ありがとう
java - EJB メソッドの呼び出し中にクライアント スレッドを中断する適切な方法は何ですか?
GUIがフリーズするのを防ぐために、新しいスレッドでサーバー呼び出しを管理しているJavaクライアントがあります。
これが多くの場所で防止されたとしても、たとえば異なるパラメーターを使用して、同じモデルでメソッドが再度呼び出される可能性があります。そのような場合、私は明らかに、最新のパラメーターを使用した最新の呼び出しが「成功」し、その結果を表示することを望んでいます。
以前に起動されたスレッドを追跡し、新しいスレッドを起動する前に中断するシステムがあります ( Thread.interrupt()
)。if (Thread.currentThread().isInterrupted()
他のメソッドは、新しい結果を GUI 要素に送信する前に( を使用して) 中断されないスレッドで実行されているかどうかを確認します。
この構造は、サーバーへの以前のコネクタで機能していました。プロセスの割り込みフラグをチェックしていたのは私だけだったからです。私の問題は、現在クライアントで EJB メソッド呼び出しを使用していて、中断されたスレッドに対する反応が悪いことです。EJB 呼び出し中にスレッドを中断すると、RuntimeException
を含むがトリガーされInterruptedException
ます。そして、それは普通のことではないようです。
明らかに、すべてのサーバー呼び出しで RuntimeExceptions をキャッチし、割り込みの原因を確認できますが、あまり「クリーン」ではないようです。
私の質問は、そのような状況で何ができるでしょうか? EJB メソッド呼び出しを実行しているスレッドを中断する適切な方法は何ですか?
java - LinkedBlockingQueueがInterruptedExceptionをスローします
私はこのコードを持っています。Aは、キューへの追加を待機しているときに中断された場合にLinkedBlockingQueue
のみ、をスローする必要があります。Exception
ただし、このキューには制限がないため、できるだけ早く追加する必要があります。シャットダウンメソッドがスローするのはなぜInterruptedException
ですか?