Java学習スレッドの状態

1.スレッドステータスの概要

スレッドが作成されて開始されると、スレッドは開始されるとすぐに実行状態になることも、常に実行状態になることもありません。スレッドにはライフサイクルがあります。スレッドのライフサイクルでは、APIの列挙java.lang.Thread.Stateが6つのスレッド状態を提供します。

1.NEW(新規)
スレッドは作成されたばかりですが、まだ開始されていません。startメソッドはまだ呼び出されていません。
2.実行可能(runnable)
スレッドがJava仮想マシンで実行できる状態オペレーティングシステムのプロセッサによっては、スレッドが独自のコードを実行している場合と実行していない場合があります。
3Blocked(lock blocked)
スレッドがオブジェクトロックを取得しようとし、オブジェクトロックが他のスレッドによって保持されている場合、スレッドはBlocked状態になり、スレッドがロックを保持している場合、スレッドはRunnable状態になります。
4.待機中(無限待機)
スレッドが別のスレッドが(ウェイクアップ)アクションを実行するのを待機している場合、スレッドは待機状態に入ります。この状態に入ると、自動的に起動することはできません。起動するには、別のスレッドがnotifyまたはnotifyAllメソッドを呼び出すのを待つ必要があります。
5. Timed Waiting(時間待機)は
待機状態と同じです。タイムアウトパラメータを持ついくつかのメソッドがあり、それらを呼び出すと時間待機状態になります。この状態は、タイムアウト期間が終了するか、ウェイクアップ通知が受信されるまで残ります。タイムアウトパラメータを持つ一般的なメソッドは、Thread.sleepおよびObject.waitです。
6.終了(終了)
runメソッドが正常に終了したために終了したか、キャッチされなかった例外のためにrunメソッドが終了したために終了しました。

この図を使用して、以下を直接理解できます。
ここに画像の説明を挿入

おすすめ

転載: blog.csdn.net/weixin_44664432/article/details/106810450