19

デッドスレッドを実行可能な状態に戻すさまざまな可能性は何ですか?

4

7 に答える 7

54

スレッドのライフサイクル イメージ

スレッド ライフ サイクル イメージを見ると、スレッドが終了すると、新しい位置に戻る方法はありません。

したがって、デッド スレッドを実行可能な状態に戻す方法はありません。代わりに、新しい Thread インスタンスを作成する必要があります。

于 2013-08-14T05:40:56.853 に答える
14

JavaDocsから...

スレッドを複数回開始することは決して合法ではありません。特に、実行が完了すると、スレッドは再開されない場合があります。

新しいインスタンスを開始する必要があります。

できれば、実行したいアクションはRunnableインターフェイスにラップする必要があります。そうすれば、単に をRunnable新しいインスタンスに渡すことができます。Thread

于 2013-08-14T05:38:53.813 に答える
5

スレッドは、他のスレッドに関係なく独立して実行される個別の軽量プロセスです。実行が完了すると、再起動する手段がありません。

于 2013-08-14T05:59:37.123 に答える
4

もう 1 つの明白な解決策は、スレッド機能が何度も必要な場合は、スレッドを停止させないことです。終了させて​​終了させるのではなく、上部に適切な待機を指定して while(true) ループに押し込みます。その後、シグナルを送ることで、その作業を「再開」させることができます。

これは、スレッドを継続的に作成/終了/破棄するよりもはるかに速く、安全で、効率的です。

于 2013-08-14T08:19:37.920 に答える
3

run()メソッドの実行が終わると、本来の仕事は終わったのでデッド状態にします。これは、JVM によって暗黙的に行われます。デッド状態では、スレッド オブジェクトはガベージ コレクションされます。スレッドのライフサイクルの終わりです。スレッドが削除されると、再度再開することはできません (スレッド オブジェクトが存在しないため)

ここに画像の説明を入力

スレッドのライフサイクルについては、こちらからご覧ください。

于 2013-08-14T05:39:27.223 に答える