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をスローした場合、待機、時間は四つの状態を待って、スレッドが終了状態になります。