問題タブ [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 投票する
3 に答える
17357 参照

java - Thread.join()の前にThread.interrupt()を呼び出すと、join()はInterruptedExceptionをすぐにスローしますか?

基本的に、質問のタイトルが言うこと。

私自身のテストからはそう思われますが、確かにしたかっただけです。「待機」ルーチンを実行する前に、スレッドThread.join()のステータスをチェックしていると思いますか?interrupted

0 投票する
1 に答える
606 参照

multithreading - Monotouch Webclient.CancelAsync ThreadInterruptedException

WebClient.DownloadDataAsync() を使用して、Web からデータをダウンロードします。

しかし、webClient.CancelAsync();ダウンロードをキャンセルするために使用すると、次の例外が発生します。

どうすればこの問題を解決できますか?

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

java - Android / Java - インスタンスへの参照がない場合の通知方法

この質問は android または java のいずれかに対するものです。クラスのインスタンス(スレッドも)があるとします。

インスタンスを破棄/閉じるのを忘れないようにするために(そしてメモリリークの可能性を回避するために)、このインスタンスへの参照がなくなった場合、特定のメソッドを自動的に呼び出して、それ自体を破棄/閉じます(スレッドの場合は、おそらくそれ自体が中断されます)。

そのようなことを強制することは可能ですか?必要に応じて、そのようなことが GC 中にのみ発生することを気にしません。

0 投票する
1 に答える
210 参照

java - 実行を停止できません

ユーザーがクエリを実行できるようにすることを目的としたアプリケーションを開発しました。ユーザーがクエリを入力して実行ボタンをクリックすると、制御がRMIサーバーに渡され、RMIサーバーがスレッドを開始します。

ユーザーは他のクエリを次々に実行できる必要があり、各クエリは異なるスレッドで実行されます。

スレッドの実行を停止できません。実行中または渡されたスレッドIDに基づくボタンクリックイベントで実行を停止したい。私は以下のコードを試しています

スレッドを開始する場所からのRMIサーバークラス

RMIクライアント

私の知っているまで、executeJob()が終了するまでp.killJob()は呼び出されません。実行中に実行を停止したい

0 投票する
1 に答える
9677 参照

java - 終了信号を待っている間にInterruptedExceptionを処理する(Androidのバグ?)

私は以下のコードに出くわしました、そしてそれが私が思うことを正確に行うかどうか疑問に思っています:

mShouldExitコンテキストについて:(モニター内で)チェックしsObject、その場合に終了する別のスレッドがあります。

これは私には正しいパターンではないようです。割り込みが発生すると、割り込みステータスが再度設定されるため、に戻るとsObject.wait()、別のInterruptedExceptionが発生するなどの問題が発生します。したがって、真の待機状態()に移行することはできません。sObject.wait()つまり、sObjectモニターを解放することはありません。他のスレッドはsObjectのモニターに入ることができないため、mExitingをtrueに設定できないため、これにより無限ループが発生する可能性があります。(したがって、この呼び出しはエラーだと思いinterrupt()ます。ここでは使用しないでください。)何かが足りないのでしょうか。

コードスニペットは、公式のAndroidフレームワークソースコードの一部であることに注意してください。

更新:実際には、GLレンダリングの開始時にAndroidで同じパターンが使用されるため、状況はさらに悪化します。の公式ソースコードGLSurfaceView.GLThread.surfaceCreated()

同様の方法でバグを再現できます。UIスレッドに割り込みステータスフラグがまだあることを確認してから、GLSurfaceViewを追加してGLレンダリングを開始します(setRenderer(...)ただし、一部のデバイスでは、GLSurfaceViewにVisibility.VISIBLEステータスがあることを確認してください。そうでない場合、レンダリングは行われません。始める)。

上記の手順に従うと、UIスレッドは無限ループになります。これは、上記のコードがInterruptedException(のために)を生成し続けるため、GLスレッドがfalsewait()に設定されることはないためです。mWaitingForSurface

私のテストによると、このような無限ループは、GC_CONCURRENTガベージコレクション(または、少なくともlogcat内のこのようなメッセージ)の無限シーケンスをもたらすようです。興味深いことに、誰かが以前にスタックオーバーフローに関する未知の不十分に定義された問題を抱えていました。これは関連している可能性があります: 解放されたGC_concurrentを解決する方法は?

彼のUIスレッドの割り込みフラグがtrueに設定されていて、彼が言及しているマップにGLSurfaceViewを使用していた可能性はありませんか?単なる仮定、考えられるシナリオ。

0 投票する
1 に答える
573 参照

scala - SBT で Scala を使用する EBean (InterruptedException: スリープが中断されました)

SBT で Scala を使用して EBean を実行しようとすると、エラーが発生します。

これはコードです (テスト: http://www.avaje.org/ebean/getstarted_props.html#test ):

これはエラーです:

プロジェクトの何が問題になっていますか?

GIT リポジトリ: https://github.com/odwrotnie/hello-ebean ; メインクラス: https://github.com/odwrotnie/hello-ebean/blob/master/main/src/main/scala/hello/main.scala ; 設定: https://github.com/odwrotnie/hello-ebean/blob/master/main/src/main/resources/ebean.properties .

前もってありがとう、イータム。

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

java - swingworker を使用した java.lang.InterruptedException

Swingworker を使用して URL アドレスから値を要求し、表示される情報のバージョンを動的に変更しています。場合によっては、このワーカーはキャンセルされます。問題は、時々 java.lang.InterruptedException が発生することです (ただし、ワーカーをキャンセルするたびに発生するわけではありません)。どうすればいいのかわかりません。さらに、どこにスローされるのかわかりません。短時間で多くのバージョン変更を行うと取得されるため、デバッグできません(スライダーを使用しますが、これはスライダーをドラッグしているときに発生します)しばらくの間) 。すべて正常に動作しますが、次の厄介なエラーが発生します。

また、上記の追加メッセージがスローされるたびに、次の例外がスローされます。

プログラムがブラウザーでアプレットとして実行されている場合にのみ例外がスローされるという興味深いこと。プログラムが api からアプレットとして実行されている場合、例外はスローされません。

私のストリングワーカー:

何が原因で、どのように処理するか、または少なくとも非表示にする方法がわかりました(すべてが正常に機能するため)。どんな助けでも大歓迎です。

アップデート:

ValueRequester.doInBackround() でこの例外をキャッチしようとしましたが、私の catch ステートメントは例外をキャッチしません。doInBackground() の私の更新されたコード:

残念ながら、システム アウト メッセージの代わりにスタック トレースが出力されます。ここで何が間違っているのでしょうか?

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

java - 自己中断 ExecutorService の作成

何か問題が発生した場合に IOException をスローする必要があるファイルのディレクトリで作業するタスクがあります。また、高速化する必要があるため、完了した作業を複数のスレッドに分割し、それらの終了を待っています。次のようになります。

ワーカースレッドは基本的に次のとおりです。

望ましい動作は、Worker に IOException がある場合、生成スレッドがそれを認識し、独自の IOException をスローできることです。これは、ワーカー スレッドがエラーを通知できるようにするための最善の方法でしたが、正しく設定したかどうかはまだわかりません。

それで、まず第一に、これは私が期待していることをしますか?ワーカー スレッドの run() でエラーが発生した場合、呼び出しThread.currentThread().interrupt();によって InterruptedException がスローされ、ブロックによってキャッチされるようになりexecutorService.awaitTermination(Long.MAX_VALUE, TimeUnit.NANOSECONDS);ますか?

第 2 に、すべてのスレッドがキューに入れられる前に、実行中のワーカーがその割り込みを呼び出した場合はどうなりますか。ブロッキングの try/catch ブロックの前に?

最後に (そして最も重要なことに)、私の目的を達成するためのよりエレガントな方法はありますか? 無数のサブスレッドをすべて、完了するまで、またはいずれかのサブスレッドにエラーが発生するまで実行させたいと考えています。その時点で、(ディレクトリ全体を効果的に失敗させることによって) 生成スレッドで処理したいと考えています。


解決

答えに基づいて、これが私が最終的に使用した実装です。それは私の非同期の欲求をうまく処理し、IOExceptionsできれいにそして比較的速く失敗します。

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

java - InterruptedExceptionをキャッチしたときにJVMを終了する必要がありますか

タイトルが示すように、InterruptedExceptionを取得したときにjvmを強制的に終了する必要がありますか?私が尋ねる理由は、私が(Unix)割り込み信号と少し混乱しているからです。Javaアプリケーションの実行中にCtrl-Cを入力すると、ブロックしているスレッドはInterruptedExceptionを受け取りますか?

簡単に言うと、
1)InterruptedExceptionがいつ、なぜスローされたのですか?
2)JVMが外部から割り込みまたは強制終了された場合(Unixコマンドなど)、スレッドは割り込みを受けますか?

ありがとう

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

java - semaphore.acquire()がInterruptedExceptionを取得した場合、semaphore.relase()を実行する必要がありますか?

Java java.util.concurrent.Semaphoreのドキュメントから、semaphore.acquire()がスレッドをブロックし、後でInterruptedExceptionによって中断された場合に何が起こるかは、私にはよくわかりませんでした。セマフォ値が減少したので、セマフォを解放する必要がありますか?

現在、私は次のようなコードを使用しています。

または、acquire()中にInterruptedExceptionが発生したときにrelease()を呼び出さないでください。