Javaのパークスレッドと待機スレッドの違いは何ですか?私はjbossコアダンプを持っていて、それを分析すると、多くのパークされたスレッドが表示されています。
5 に答える
Javadocのpark()
メソッドを見てください。
許可が利用可能でない限り、スレッドスケジューリングの目的で現在のスレッドを無効にします。許可証が利用可能な場合、それは消費され、呼び出しはすぐに戻ります。そうしないと、現在のスレッドはスレッドスケジューリングの目的で無効になり、次の3つのいずれかが発生するまで休止状態になります。
他のスレッドは、現在のスレッドをターゲットとしてunparkを呼び出します。または他のスレッドが現在のスレッドを中断します。または、誤って(つまり、理由もなく)呼び出しが返されます。このメソッドは、これらのどれがメソッドを返す原因となったかを報告しません。発信者は、最初にスレッドがパークする原因となった条件を再確認する必要があります。呼び出し元は、たとえば、戻ったときのスレッドの割り込みステータスを判別することもできます。
したがって、パークされたスレッドは、を使用してブロックされたスレッドLockSupport.park()
です。
LockSupport - クラスは、ロックおよびその他の同期クラスを作成するためのファシリティ基本スレッド ブロッキング プリミティブを取ります。
メソッド park() は、パーミットが利用可能でない限り、スレッド スケジューリングの目的で現在のスレッドを無効にします。
unpark(Thread thread) は、指定されたスレッドの許可がまだ使用可能でない場合に使用可能にします。
次のように使用し
ます。}