Javaで使用されるスレッドスケジューリングアルゴリズムとは何ですか

コンピュータには通常CPUが1つしかなく、一度に実行できるマシン命令は1つだけです。各スレッドは、CPUを使用する権利がある場合にのみ命令を実行できます。複数のスレッドのいわゆる同時操作は、実際には、マクロの観点から、各スレッドがCPUを順番に使用する権利を取得し、それぞれのタスクを実行することを意味します。実行中のプールでは、CPUを待機している準備完了状態の複数のスレッドがあります。JAVA仮想マシンの1つのタスクがスレッドのスケジューリングを担当します。スレッドのスケジューリングとは、特定のメカニズムに従って複数のスレッドにCPU使用権を割り当てることです。

スケジューリングモデルには、時間共有スケジューリングモデルとプリエンプティブスケジューリングモデルの2つがあります。

時分割スケジューリングモデルは、すべてのスレッドが順番にcpuを使用する権利を取得し、各スレッドが占めるCPUのタイムスライスが均等に分散されることを意味します。これも理解しやすいです。

Java仮想マシンはプリエンプティブスケジューリングモデルを採用しています。これは、実行可能プール内の優先度の高いスレッドに優先順位を付けてCPUを占有することを意味します。実行可能プール内のスレッドの優先度が同じである場合、スレッドはランダムに選択されてCPUを占有します。実行状態のスレッドは、CPUを放棄する必要があるまで実行されます。

Javaのデフォルトのスレッドスケジューリングアルゴリズムは、
プリエンプティブのようです。スレッドのCPUが不足すると、オペレーティングシステムは、スレッドの優先度、スレッドの枯渇、およびその他のデータに基づいて合計優先度を計算し、実行のために次のタイムスライスをスレッドに割り当てます。

おすすめ

転載: blog.csdn.net/qq_41489540/article/details/109097373