このチュートリアルの動作環境: Windows 7 システム、Java 10 バージョン、DELL G3 コンピューター。
1. 新規: 作成後に起動されていないスレッドがこの状態になります。
2. Runnable : オペレーティング システムのスレッド状態に、Running と Ready が含まれます。つまり、この状態のスレッドは実行中であるか、オペレーティング システムが実行時間を割り当てるのを待っている可能性があります。
3. 待機中: この状態のスレッドにはプロセッサ実行時間が割り当てられず、他のスレッドによって明示的に起動されるまで待機する必要があります。次のメソッドを実行すると、スレッドが待機状態になります。
Object::wait() メソッドは Timeout パラメータを設定しません。
Timeout パラメータを設定しない Thread::join() メソッド。
LockSupport::park() メソッド。
4. 時間指定待機: この状態のスレッドにはプロセッサ実行時間が割り当てられませんが、他のスレッドによって明示的にウェイクアップされるまで待つ必要はありません。一定時間が経過すると、システムによって自動的にウェイクアップされます。次のメソッドは、スレッドをデッドライン待機状態にします。
Timeout パラメータが設定された Object::wait() メソッド。
タイムアウトパラメータが設定された Thread::join() メソッド。
LockSupport::parkNanos() メソッド;
LockSupport::parkUntil() メソッド。
5. ブロック済み: スレッドはブロックされています。「ブロック状態」と「待機状態」の違いは、「ブロック状態」は、別のスレッドがロックを放棄したときに発生します。 「待機状態」は、一定時間待機するか、ウェイクアップ アクションが発生するのを待機します。プログラムが同期領域に入るのを待っている間、スレッドはこの状態に入ります。
6. 終了: 終了したスレッドのステータス。スレッドは実行を終了しました。
以上がJava スレッドの 6 つの状態です。皆さんの参考になれば幸いです。
その他の Java 学習ガイド: Java チュートリアル