スレッドのライフサイクル、つまりスレッドの状態には 5 つの段階があります: 新しい状態 (New)、準備完了状態 (Runnable)、実行中状態 (Running)、ブロック状態 (Blocked)、および停止状態 (Dead) 。
スレッドが作成されて開始されると、開始と同時に実行状態になるわけではなく、常に実行状態になるわけでもありませんが、 5つの状態を通過します。この記事では、スレッドのライフサイクルを示し、スレッドの 5 つの状態を理解できるようにします。 [関連ビデオチュートリアルの推奨事項: Java チュートリアル ]
新しい状態 (New)
プログラムが新しい状態を使用するときキーワード スレッドが作成されると、スレッドは新しく作成された状態になります。例:
Thread t = new MyThread();
準備完了状態 (実行可能)
start() メソッドを呼び出した後、 thread 現時点では準備完了状態になります。これは、このスレッドが実行の準備ができていること、つまり実行できるが、まだ実行中のスレッドではないことを意味します。
実行状態 (Running)
#スレッドが JVM のスレッド スケジューラからスケジュールを取得すると、スレッドは実行状態と開始 run() メソッドを実行するスレッド実行本体。
ブロック状態 (ブロック)
これはまだアクティブなスレッドですが、現在は実行できません (何らかの理由で、 CPU 使用権を一時的に放棄し、実行を停止した状態)。
スレッドがブロッキングに入る 3 つの状態:
1. ブロッキングの待機:
1) スレッドは wait() メソッドを呼び出して待機状態になります。
2) join() メソッドを呼び出して、このスレッドを別の待機状態にします。つまり、スレッドが終了するかタイムアウトになるのを待ちます。
2. 同期ブロッキング
スレッドは、(他のスレッドによって保持されている) 同期モニターの取得に失敗すると、このブロッキング状態に入ります。
3. その他のブロッキング
sleep() メソッドを呼び出して、占有されている CPU リソースを積極的に放棄するか、ブロッキング IO メソッドを呼び出して I/O リクエストを発行し、このブロッキング状態に入ります。 。
説明: ブロックされたスレッドは、適切な時間 (ブロックが解除された後) に再び準備完了状態に入り、スレッド スケジューラが再度スケジュールするのを待ちます。
停止状態 (デッド)
run() メソッドを終了すると、スレッドは自然に停止し、終了状態または停止状態になります。 、これでライフサイクルも終了します。
要約: 以上がこの記事の全内容です。皆さんの学習に役立つことを願っています。
以上がスレッドのライフサイクルとは何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。