スレッド6つの状態とその変換

6つの状態は、スレッドを紹介します

スレッドのいくつかの状態は、それが配置され、ソースコードのThreadクラスで見ることができる列挙の状態と呼ばれています。
ここに画像を挿入説明

6の合計、以下に示すように。

1.新(新):スレッドが状態を作成するために開始されていないと(つまり、作成後に呼び出していませんstart()メソッド)。
ここに画像を挿入説明
2.実行(Runnableを):実行されて、それは、オペレーティングシステムのスレッド状態の実行と準備を含め、CPUのタイムスライスを待っていてもよいです。
ここに画像を挿入説明

ブロックされた3.(ブロック):これは、この状態を終了するかどう排他ロックを取得するために待機中のスレッドがロックを解放する、ここでブロッキングロックに閉塞を指します。
ここに画像を挿入説明
4.無期限に待機(待機):他のスレッドを待っているが、明示的にCPUのタイムスライスを割り当てられないだろう、再開しました。

次の例では、注釈のソースです。

ここに画像を挿入説明
翻訳。

エントリー方法 終了方法
タイムアウトパラメータははObject.wait()メソッドで設定されていません 他のスレッドはObject.notify()を呼び出し/ Object.notifyAll()
Timeoutパラメータは、Thread.join()メソッドを設定されていません スレッドが完了したばかりされて呼ばれています
LockSupport.park()メソッド LockSupport.unpark(スレッド)

ここに画像を挿入説明

待機期間(時限待機):他のスレッドを待たずに、明示的に、システムが自動的に一定時間後に目を覚ますだろう、再開しました。

ソースコードのコメントから、例。

エントリー方法 終了方法
Thread.sleep(長いミリ)メソッド ミリ時間が終了
Object.waitタイムアウトパラメータセット()メソッド 終了時間/ Object.notify()/ Object.notifyAll()
Thread.joinタイムアウトパラメータセット()メソッド 時間で終了/スレッドが完了したばかりされて呼ばれています
LockSupport.parkNanos()メソッド LockSupport.unpark(スレッド)
LockSupport.parkUntil()メソッド LockSupport.unpark(スレッド)

ここに画像を挿入説明
6.エンド(終端):現在のスレッドが終了したことを示し

ここに画像を挿入説明

スレッドの状態遷移

ここに画像を挿入説明
注意:

  • 矢印は2つの状態間の遷移を表す2つのウェイは双方向です。
  • スレッドがブロックされ、どのような状態で例外がRunnableをスローした場合、待機、時間は四つの状態を待って、スレッドが終了状態になります。

おすすめ

転載: blog.csdn.net/u013568373/article/details/94452459