zzh

zzh

ThreadPoolExectorのコールバック関数Future

本文では、ThreadPoolExecutor で submit タスクの後に発生する future コールバック関数の生成について調査します。
image

上記の図のように、submit の後にはまずこのコードブロックに入り、コードブロック内では主に 2 つのタスクが実行されます:1 つは RunnableFuture オブジェクトの作成、もう 1 つは RunnableFuture の実行です。

次に、最初の行のコアコードに入ります。以下のように、FutureTask オブジェクトが作成されます。
image

image

FutureTask オブジェクトの最も重要なメンバ変数は次のとおりです:

image

次に、2 行目のコアコードに入ります。本質的にはスレッドを開始して実行することです:

image

その後、Java では future.get () と future.cancel () を使用してタスクを開始またはキャンセルする方法について考えます。
まず、future.get () メソッドを見てみましょう:

image

image

では、outcome はどこから来るのでしょうか?もちろん、futuretask の run メソッドからです。run メソッドでは、タスクが完了した後の結果が outcome メンバ変数に代入されます。
そして、future.cancel () メソッドは、タスクをキャンセルするためにスレッドを中断状態に設定します:

image

読み込み中...
文章は、創作者によって署名され、ブロックチェーンに安全に保存されています。