ホームページ  >  記事  >  Java  >  スレッドのライフサイクルとは何ですか?

スレッドのライフサイクルとは何ですか?

青灯夜游
青灯夜游オリジナル
2018-12-15 17:06:1513436ブラウズ

スレッドのライフサイクル、つまりスレッドの状態には 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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。