24

これは、Java スレッドのボキャブラリに関する非常に基本的な質問です。

重複の可能性はありませんが、ある可能性があります。

オラクルのドキュメントで生きているという言葉は何を指していますか?

run()メソッドがまだ完了していないときですか、それとも他のパラメーターですか?

4

7 に答える 7

31

あなたが言及したJavadocによると:

スレッドが開始され、まだ終了していない場合、スレッドは生きています。

スレッドは、そのstart()メソッドが呼び出されたときに「開始」し、そのメソッドの最後 run()、またはstop()(現在は推奨されていません) が呼び出されたときに「終了」します。そうです、スレッドはそのメソッドがまだ進行中のときに「生きている」のですが、JVM によるメソッドの呼び出しと暗黙的な呼び出しrun()の間の時間枠でも「生きている」のです。start()run()

@Marou Maroun によって提案されたThread StatesThread.getState()に関する興味深い情報も確認できます。

また、彼の提案に従い、 を超えて伝播する例外がスローされた場合にスレッドが途中で終了する可能性があることを警告していますrun。その場合、スレッドはもう生きていません。

編集: @zakkak で提案されているように、run()メソッドがまだ開始されていなくても、スレッドは生きていると見なすことができます。いつ呼び出されるかを適切に制御したい場合はScheduledExecutorService、特に、schedule()より正確な実行スケジュールを提供するメソッドを使用してください。

于 2013-06-25T09:13:23.817 に答える
3

start() が返された後、run() が JVM に戻るまで、スレッドは存続します。

于 2013-06-25T09:21:46.027 に答える
2

スレッドは、new/Running/wait 状態のときに生きています。基本的に、run メソッドは実行中かどうかに関係なく実行できます。

于 2013-06-25T09:14:01.087 に答える
1

スレッドは、startメソッドが呼び出されたときから、死んでいる前までは生きています。死に至るまでに何回でも待機状態に移行でき、待機状態であっても生きています。

生きている状態から死んでいる状態まで、状態からrunnable状態へと移動できwaitingます。

于 2013-06-25T09:13:42.207 に答える
0

スレッドは、Thread オブジェクトを作成して開始した瞬間から、run メソッドを完了するか停止するまで、生きていると見なされます。アイドル状態、実行中、またはスリープ状態であっても、生きている状態であると言われます。

于 2013-06-25T09:14:39.147 に答える
0

Thread is "Alive" は、Thread がまだ実行中であることを意味します。

run()はい、メソッドは Alive Thread に対して実行されていると言えます。

さらに、 isAlive() メソッドを使用して、スレッドがまだ実行されているかどうかを確認します。

final boolean isAlive()

isAlive()メソッドが呼び出されたスレッドがまだ実行中の場合、メソッドは true を返します。それ以外の場合は false を返します。

于 2013-06-25T09:14:43.507 に答える