エグゼキュータの概要

Javaクラスライブラリでは、タスク実行の主な抽象化はThreadではなく、Executorです。

public interface Executor {

    void execute(Runnable command);
}

これは、さまざまなタイプのタスク実行戦略をサポートできる、柔軟で強力な非同期タスク実行フレームワークの基盤を提供します。これはタスク送信プロセス実行プロセスから切り離し、Runnableを使用してタスクを表すための標準的な方法を提供します。Executorの実装は、ライフサイクルのサポートだけでなく、統計情報収集のメカニズム、アプリケーション管理メカニズム、およびパフォーマンス監視も提供します。

Executorフレームワークの2レベルのスケジューリングモデル

Javaの場合、Executorはマルチスレッドプログラムをいくつかのタスク分解し、ユーザーレベルのスケジューラーを使用してこれらのタスクを固定数のスレッドにマップします。最下層の場合、オペレーティングシステムカーネルはこれらのスレッドをハードウェアプロセッサにマップします

上の図からわかるように、アプリケーションプログラムはExecutorフレームワークを介して上位レベルのスケジューリングを制御し、下位レベルのスケジューリングはオペレーティングシステムカーネルによって制御され、下位レベルのスケジューリングはアプリケーション階層によって制御されません。 。

エグゼキュータフレームワークの構造

  • タスク:実行可能なインターフェイス[返されたタスク]、呼び出し可能なインターフェイス[返されたタスク]
  • タスクの実行: Executor、タスク実行メカニズムのコアインターフェイス、およびExecutorから継承されたExecutorServiceインターフェイスを含みます。
  • 非同期計算の結果: FutureおよびFutureTask

おすすめ

転載: blog.csdn.net/weixin_39443483/article/details/114681325