問題タブ [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 - throw InterruptedException 使用時の「シンボルが見つかりません」
スレッドが同時に実行されていたため、それらの出力が混同されていたため、最初のスレッドに遅延を設定しましたが、Java が InterruptedException の受け入れを拒否しているため、最初のスレッドを実行できませんでした。以下はこれまでの私のコードです:
java - これはブロッキングクローズを処理するスレッドセーフな方法ですか?
スレッドは、ブロック操作であるリソースを開きます。成功した場合、スレッドは再びスレッドを閉じる必要があります。これは再びブロックされますが、常に有限時間で成功します。
hasResource
スレッドが中断されたくないことを示すために、他のスレッドと同期できないフラグ ( と呼びましょう) を使用することができます。他の同期はまったく許可されません。
このシナリオを処理するための安全な方法は次のとおりですか?
特に、これにより、スレッドがリソースを持っている間にスレッドが中断されないことが保証されますか?
私が知る限り、エラーが発生する可能性があるウィンドウは 1 つだけです。それは、Open の直後で、フラグを設定する前です。ただし、これはリソースのリークにはつながらないようですが、割り込み要求を誤って無視することにはなりません。それを防ぐことは可能ですか?
java - スレッドが既に中断されている場合、Thread.sleep はスローしますか?
ブロックされていない間に中断された (つまり、InterruptedException がスローされなかった) スレッドが与えられた場合、そのスレッドは後でスリープしようとしたときに InterruptedException をスローしますか?
ドキュメントには、これが明確に記載されていません。
InterruptedException - いずれかのスレッドが現在のスレッドを中断した場合。この例外がスローされると、現在のスレッドの中断ステータスがクリアされます。
java - スレッドが wait() で中断された場合、同期ブロック外の catch ブロックに到達する前にモニターが再取得されますか?
次のコードを検討してください。
wait() でブロックされている間にスレッドが中断された場合、catch ブロックに入る前に myLock のモニターが (一時的に?) 再取得されますか?
java - Java でのスリープ中断の根本原因を突き止めるにはどうすればよいですか?
私はいくつかのコードを持っています:
MyTask
から戻ってきた複数のインスタンスでこれを実行するとgetTasks()
、非常に不思議になります。
ここでの問題は、根本的な原因がないことです。スレッドのスリープは、ある時点で「中断」されているだけです。
だから私は尋ねます:いつ/なぜThread.sleep()
中断されたのか、そして例外の根本的な原因を突き止めるために何ができるでしょうか?
java - Future からスローされた InterruptedException
次のようなメソッドがあるとします。
はどのようにしてInterruptedException
投げられた (そして巻き込まれたpoll()
) のでしょうか? callable ( を含むInterruptedException
)によってスローされるものはExecutionException
すべて であり、先物をキャンセルすることはなく、サービスshutdownNow()
は決して呼び出されません。
余談ですが、このポーリング方法を次のようなものに対してより防弾にすることは可能InterruptedException
ですか?
java - 同期されたブロック/メソッドを中断できますか?
Re-EntrantLocks と の理論的な違いはわかってsynchronized
いますが、以下の点で混乱しています。
synchronized
Javarevisited の比較とLock
オブジェクトに関する記事からこのステートメントを参照してください。
ReentrantLock と Java の synchronized キーワードのもう 1 つの注目すべき違いは、Lock の待機中に Thread を中断できることです。synchronized キーワードの場合、スレッドは無期限にロックを待機してブロックされる可能性があり、それを制御する方法はありませんでした。ReentrantLock は、lockInterruptively() と呼ばれるメソッドを提供します。これは、ロックを待っているときにスレッドを中断するために使用できます。同様に、タイムアウトを指定した tryLock() を使用して、ロックが一定時間利用できない場合にタイムアウトすることができます。
上記のステートメントに従って、同期されたメソッドで Thread waiting() を中断しようとしました (つまり、待機をブロックする) と、InterruptedException がスローされました。しかし、この振る舞いは、上記のステートメントで述べられていることと矛盾しています。
これが私が得た出力です:
私の例が正しくないか、または Synchronized() に関する引用文が正しくないか、混乱していますか?
java - OSが開始したシャットダウン中にJavaスレッドが停止しました(JAVAドキュメントと矛盾しています!)
java.lang.Thread.setDaemon(boolean)
実行中のスレッドがすべてデーモン スレッドのみの場合、Java 仮想マシンは終了します。
まだ下のコードでは、プロセスを中断している間(OSスタイル)に「安全にシャットダウン」が発生することはなく、SIGKILLを使用していません...
ドキュメンテーションが間違っているので (?)、すべての非デーモン スレッドを追跡し、シャットダウン フックでそれらに参加する唯一の手段ですか?