0
A
答えて
0
ほとんどのスレッドAPIは、オペレーティングシステムがあなたの代わりにあなたの提供する特定の機能を実行するように要求することによって動作します。この関数が最終的に(たとえばreturn文を介して、またはコードの終わりに)返ると、operationgシステムはスレッドを終了します。
「死んだ」スレッドについては、スレッドAPIで使用されている用語ではありません。
1
私の理解では、スレッドは基本的にカーネルのデータ構造です。スレッドを作成および破棄するには、システムAPIを使用します。スレッドを作成して実行を開始し、コードが不足している場合、カーネルはおそらくスレッドを非実行状態にします。アンマネージコードでは、まだそのリソースを解放する必要があります。
スレッドプールがあります。その場合、スレッドプールによって実行される作業をキューに入れ、プラットフォームはスレッドを選択して作業を実行します。作業が完了すると、スレッドはスレッドプールに戻されます。プラットフォームは、スレッドの作成と破棄を行い、使用可能なスレッドとワークロードおよびシステムリソースのバランスをとります。
1
Java 1.3では、6つの状態のスレッドモデルが導入されました。
- すぐに実行:これは、次の状態を含むスレッドが作成され、を実行するスレッドスケジューラによって
- を実行するために選んさを待っている:スレッドが実行されています。
- 待機中:スレッドは、(I/Oのような)外部処理が完了するのを待っている間ブロック状態です。
- スリーピング:I/Oで:スレッドがをブロック
.sleep()
- を介してスリープ状態に強制される(例えば、データのバイトを読み取る)完成後の状態1へ移動します。 オンシンク:ロック取得後に状態1に移行します。
- デッド(終了):スレッドは終了しており、再開できません。
「死んだ」という用語は、今日ほとんど使用されず、ほぼ完全に「終了」に変更されています。これら2つは同等です。