これは、Java スレッドのボキャブラリに関する非常に基本的な質問です。
重複の可能性はありませんが、ある可能性があります。
オラクルのドキュメントで生きているという言葉は何を指していますか?
run()
メソッドがまだ完了していないときですか、それとも他のパラメーターですか?
これは、Java スレッドのボキャブラリに関する非常に基本的な質問です。
重複の可能性はありませんが、ある可能性があります。
オラクルのドキュメントで生きているという言葉は何を指していますか?
run()
メソッドがまだ完了していないときですか、それとも他のパラメーターですか?
あなたが言及したJavadocによると:
スレッドが開始され、まだ終了していない場合、スレッドは生きています。
スレッドは、そのstart()
メソッドが呼び出されたときに「開始」し、そのメソッドの最後 run()
、またはstop()
(現在は推奨されていません) が呼び出されたときに「終了」します。そうです、スレッドはそのメソッドがまだ進行中のときに「生きている」のですが、JVM によるメソッドの呼び出しと暗黙的な呼び出しrun()
の間の時間枠でも「生きている」のです。start()
run()
@Marou Maroun によって提案されたThread StatesThread.getState()
に関する興味深い情報も確認できます。
また、彼の提案に従い、 を超えて伝播する例外がスローされた場合にスレッドが途中で終了する可能性があることを警告していますrun
。その場合、スレッドはもう生きていません。
編集: @zakkak で提案されているように、run()
メソッドがまだ開始されていなくても、スレッドは生きていると見なすことができます。いつ呼び出されるかを適切に制御したい場合はScheduledExecutorService
、特に、schedule()
より正確な実行スケジュールを提供するメソッドを使用してください。
start() が返された後、run() が JVM に戻るまで、スレッドは存続します。
スレッドは、new/Running/wait 状態のときに生きています。基本的に、run メソッドは実行中かどうかに関係なく実行できます。
スレッドは、start
メソッドが呼び出されたときから、死んでいる前までは生きています。死に至るまでに何回でも待機状態に移行でき、待機状態であっても生きています。
生きている状態から死んでいる状態まで、状態からrunnable
状態へと移動できwaiting
ます。
スレッドは、Thread オブジェクトを作成して開始した瞬間から、run メソッドを完了するか停止するまで、生きていると見なされます。アイドル状態、実行中、またはスリープ状態であっても、生きている状態であると言われます。
Thread is "Alive" は、Thread がまだ実行中であることを意味します。
run()
はい、メソッドは Alive Thread に対して実行されていると言えます。
さらに、 isAlive() メソッドを使用して、スレッドがまだ実行されているかどうかを確認します。
final boolean isAlive()
isAlive()
メソッドが呼び出されたスレッドがまだ実行中の場合、メソッドは true を返します。それ以外の場合は false を返します。