ホームページ  >  記事  >  Java  >  Java の高度な知識 - スレッドの 6 つの状態

Java の高度な知識 - スレッドの 6 つの状態

王林
王林転載
2019-11-26 11:44:593215ブラウズ

Java の高度な知識 - スレッドの 6 つの状態

スレッド ステータス

スレッドには次の 6 つの状態があります:

New(新しく作成されました) )

Runnable(実行可能)

Blocked(ブロックされた)

Waiting(待機中)

Timedwaiting(時間指定待機)

#Terminated(終了)#このうち、スレッドの現在の状態を取得します。 State を取得するには、getState メソッドを呼び出すことができます。

java 関連ビデオの推奨:

java ビデオ

以下、各ステータスについて説明します

1. 新しく作成されたスレッド (New)

new Thread (r) を使用する場合など、new 演算子を使用してスレッドを作成すると、スレッドは実行を開始せず、スレッド内のコードも実行を開始しません。 Newステータスになります。

2. 実行可能なスレッド (Runnable)

スレッド上で start() メソッドを実行すると、スレッドが開始されます。ただし、実行可能状態のスレッドは、オペレーティング システムのタイム スライス スケジューリングに応じて、実行される場合と実行されない場合があることに注意してください。プリエンプティブ スケジューリング システムは、実行する各スレッドにタイム スライスを割り当てます。タイム スライスが使い果たされると、オペレーティング システムはスレッドの実行権を剥奪し、優先順位に基づいて次に実行するスレッドを選択します。

3. ブロックされた待機状態 (ブロック、待機、時間指定待機)

スレッドがブロックされて待機している場合、何も処理されず、コードもありません。が実行されます。オペレーティング システムが再アクティブ化するまで。

スレッドが内部オブジェクト ロックを取得しようとし、そのロックが別のスレッドによって保持されている場合、スレッドはブロッキング状態になります。他のスレッドがロックを解放し、スレッド スケジューラがスレッドの保持を許可すると、スレッドはブロック状態になります。これにより、スレッドはノンブロッキングになります。

スレッドが別のスレッドからスケジューラに条件を通知するのを待機すると、スレッドは待機状態になり、Object.wait メソッドまたは Thread.join メソッドを呼び出します。この状況が発生します。ブロック状態と待機状態には大きな違いがあります。

いくつかのメソッドにはタイムアウト パラメーターがあります。これらを呼び出すと、スレッドは時間指定された待機状態に入り、タイムアウトが経過するか、適切な通知が受信されるまで、この状態が保持されます。タイムアウト パラメーターを持つメソッドは次のとおりです:

Thread.sleep

および Object.waitThread.joinLock、tryLock、および ## Timed version #Condition.await の。 4. 終了したスレッド

スレッドが終了する理由は 2 つあります:

run() メソッドが実行後に正常に終了するためです

#キャッチされなかった例外による run メソッドの終了による予期しない終了

##5. 概要

## おすすめの関連記事とチュートリアル: Java プログラミングの概要

以上がJava の高度な知識 - スレッドの 6 つの状態の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はcsdn.netで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。