ホームページ  >  記事  >  スレッドのライフサイクルはいくつかの部分に分かれています

スレッドのライフサイクルはいくつかの部分に分かれています

清浅
清浅オリジナル
2019-04-02 17:41:4949246ブラウズ

スレッドのライフサイクルは、新規、準備完了、実行中、ブロック中、終了の 5 つの部分に分かれています。 CPU は複数のスレッド間で切り替える必要があるため、スレッドのステータスも複数の実行とブロックの間で切り替わります

スレッドのライフサイクルはいくつかの部分に分かれています

##[推奨コース: C 言語チュートリアル]

スレッドが作成されて開始されると、開始直後に実行状態になるわけでも、常に実行中であるわけでもありません。州。スレッドのライフサイクルでは、スレッドは、新規、実行可能、実行中、ブロック済み、デッドの 5 つの状態を経ます。特にスレッドの開始後は、常に CPU を「占有」して単独で実行できるわけではないため、CPU は複数のスレッド間で切り替える必要があるため、スレッドのステータスは実行とブロックの間で複数回切り替わります。

ライフサイクルの 5 つの状態

New Thread

Thread クラス (オブジェクト) のインスタンスを作成するとき、このスレッドは新しい状態 (開始されていない) になります。

例:

Thread  t1=new Thread();

準備完了 (実行可能)

スレッドは開始され、CPU タイム スライスに割り当てられるのを待っています。これは、現時点でスレッドが CPU リソースを取得するために準備完了キューで待機していることを意味します。

例:

t1.start();

Running

スレッドは CPU リソースを取得しましたCPUリソースを確保してタスク(run()メソッド)を実行しているとき、このスレッドが自動的にCPUリソースを放棄するか、より優先度の高いスレッドが入ってこない限り、スレッドは最後まで実行されます。

ブロックされた

何らかの理由で、実行中のスレッドは CPU を放棄し、自身の実行を一時停止します。つまり、ブロック状態に入ります。

スリープ: sleep(long t) メソッドを使用して、スレッドをスリープ モードにします。スリープ状態のスレッドは、指定された時間が経過すると準備完了状態に入ることができます。

待機中: wait() メソッドを呼び出します。 (準備完了状態に戻るには、motivate() メソッドを呼び出します)

別のスレッドによってブロックされています:suspend() メソッドを呼び出します。 (再開するには、resume() メソッドを呼び出します)

Death (dead)

スレッドが実行を完了するか、他のスレッドによって強制終了されると、スレッドは停止状態になります。このとき、スレッドは準備完了状態になって実行を待つことができなくなります。

自然終了: run() メソッドを正常に実行した後に終了します。

異常終了: stop() メソッドを呼び出してスレッドの実行を停止します。

要約: 上記は次のとおりです。この記事の概要 すべての内容が皆様のお役に立てば幸いです

以上がスレッドのライフサイクルはいくつかの部分に分かれていますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。