デッドスレッドを実行可能な状態に戻すさまざまな可能性は何ですか?
7 に答える
スレッド ライフ サイクル イメージを見ると、スレッドが終了すると、新しい位置に戻る方法はありません。
したがって、デッド スレッドを実行可能な状態に戻す方法はありません。代わりに、新しい Thread インスタンスを作成する必要があります。
JavaDocsから...
スレッドを複数回開始することは決して合法ではありません。特に、実行が完了すると、スレッドは再開されない場合があります。
新しいインスタンスを開始する必要があります。
できれば、実行したいアクションはRunnable
インターフェイスにラップする必要があります。そうすれば、単に をRunnable
新しいインスタンスに渡すことができます。Thread
スレッドは、他のスレッドに関係なく独立して実行される個別の軽量プロセスです。実行が完了すると、再起動する手段がありません。
もう 1 つの明白な解決策は、スレッド機能が何度も必要な場合は、スレッドを停止させないことです。終了させて終了させるのではなく、上部に適切な待機を指定して while(true) ループに押し込みます。その後、シグナルを送ることで、その作業を「再開」させることができます。
これは、スレッドを継続的に作成/終了/破棄するよりもはるかに速く、安全で、効率的です。
run()メソッドの実行が終わると、本来の仕事は終わったのでデッド状態にします。これは、JVM によって暗黙的に行われます。デッド状態では、スレッド オブジェクトはガベージ コレクションされます。スレッドのライフサイクルの終わりです。スレッドが削除されると、再度再開することはできません (スレッド オブジェクトが存在しないため)。
スレッドのライフサイクルについては、こちらからご覧ください。