同時学習計画-EXecutor、ExecutorServiceとFutureの関係01
3169 ワード
まず、Executor、ExecutorService、Futureの3つのクラスは、次のようにインタフェースです.
ExecutorServiceがExecutorを継承しているのを見ることができますが、この3つのものは何ですか.ソースコードを見てみましょう.(インタフェースのソースコードは何が面白いですか)
Executorは実行方法についてRunnableを入力し、このRunnableを実行するのは明らかです.
Executorクラスはどんな感じで、タスクを実行しますか.
このインタフェースは私たちにも書けるでしょう.
それからFutureを見てみましょう.Futureは直接汎型を伝えなければなりませんが、この汎型が何をするのか分かりません.ソースコードを見てみましょう.
だからこれらのソースコードは何のように見えますか?Executerインタフェースの方法に基づいて、execute方法が何をしているのか推測することができますが、Futureのインタフェースの方法だけを見て、私はこれらの方法が何をしているのか全然分かりません.
やはり注釈を見ましょう.
cancelメソッドは、このタスクをキャンセルすることを表し、パラメータは、このタスクが中断できるかどうかを表します.
isCancelledはbooleanに戻って中断されたかどうかを示します
isDoneはメソッドの実行が完了したことを示します
getタスク実行の結果の取得
get(パラメータ付き)代表メソッドは所定の時間に結果を返さなければならないが,このメソッドは異常に多くてたまらないので,このメソッドの要求が高いことがわかる.
Futureというクラスはどんな感じですか.このクラスは実行結果を得るために、あるいはタスクを中断するためです.
次に、多くのExecutorServiceを見てみましょう.
ソースをスキップしてここを見たの?それらのソースコードを見たくないのは正しいです.私を放しても見たくありません.めちゃくちゃに見ていて、何を見たらいいか分かりません.
これらの方法を異なるタイプに分けましょう.
shutdown、Terminated、submit、invoke
これらの方法は大体この4つのスタイルです.shutdown代表クローズタスクTerminated代表中断タスクsubmit提供runnable実行タスクinvoke実行するタスクの準備ができている
はっきり見えるかどうか.
Executorクラスはタスクを実行するため、ExecutorServiceもタスクを実行するためのようです.
しかし、ExecutorServiceが管理しなければならないことはたくさんあるようです.
中断したり、閉じたり、runnableを提供してそれらのタスクを実行したりします.
だからこの3つのクラスの関係はどのような関係なのでしょうか.
ExecutorServiceはExecutorを継承するので、言うまでもなく、すべてタスクを実行するためです.
ExecutorServiceはタスクを実行しますが、Futureはタスク実行の結果です.多分この関係です.
over!
public interface Executor
public interface ExecutorService extends Executor
public interface Future
ExecutorServiceがExecutorを継承しているのを見ることができますが、この3つのものは何ですか.ソースコードを見てみましょう.(インタフェースのソースコードは何が面白いですか)
public interface Executor {
void execute(Runnable command);
}
Executorは実行方法についてRunnableを入力し、このRunnableを実行するのは明らかです.
Executorクラスはどんな感じで、タスクを実行しますか.
このインタフェースは私たちにも書けるでしょう.
それからFutureを見てみましょう.Futureは直接汎型を伝えなければなりませんが、この汎型が何をするのか分かりません.ソースコードを見てみましょう.
public interface Future {
boolean cancel(boolean mayInterruptIfRunning);
boolean isCancelled();
boolean isDone();
V get() throws InterruptedException, ExecutionException;
V get(long timeout, TimeUnit unit)
throws InterruptedException, ExecutionException, TimeoutException;
}
だからこれらのソースコードは何のように見えますか?Executerインタフェースの方法に基づいて、execute方法が何をしているのか推測することができますが、Futureのインタフェースの方法だけを見て、私はこれらの方法が何をしているのか全然分かりません.
やはり注釈を見ましょう.
cancelメソッドは、このタスクをキャンセルすることを表し、パラメータは、このタスクが中断できるかどうかを表します.
isCancelledはbooleanに戻って中断されたかどうかを示します
isDoneはメソッドの実行が完了したことを示します
getタスク実行の結果の取得
get(パラメータ付き)代表メソッドは所定の時間に結果を返さなければならないが,このメソッドは異常に多くてたまらないので,このメソッドの要求が高いことがわかる.
Futureというクラスはどんな感じですか.このクラスは実行結果を得るために、あるいはタスクを中断するためです.
次に、多くのExecutorServiceを見てみましょう.
public interface ExecutorService extends Executor {
void shutdown();
List shutdownNow();
boolean isShutdown();
boolean isTerminated();
boolean awaitTermination(long timeout, TimeUnit unit)
throws InterruptedException;
Future submit(Callable task);
Future submit(Runnable task, T result);
Future> submit(Runnable task);
List> invokeAll(Collection extends Callable> tasks)
throws InterruptedException;
List> invokeAll(Collection extends Callable> tasks,
long timeout, TimeUnit unit)
throws InterruptedException;
T invokeAny(Collection extends Callable> tasks)
throws InterruptedException, ExecutionException;
T invokeAny(Collection extends Callable> tasks,
long timeout, TimeUnit unit)
throws InterruptedException, ExecutionException, TimeoutException;
}
ソースをスキップしてここを見たの?それらのソースコードを見たくないのは正しいです.私を放しても見たくありません.めちゃくちゃに見ていて、何を見たらいいか分かりません.
これらの方法を異なるタイプに分けましょう.
shutdown、Terminated、submit、invoke
これらの方法は大体この4つのスタイルです.shutdown代表クローズタスクTerminated代表中断タスクsubmit提供runnable実行タスクinvoke実行するタスクの準備ができている
はっきり見えるかどうか.
Executorクラスはタスクを実行するため、ExecutorServiceもタスクを実行するためのようです.
しかし、ExecutorServiceが管理しなければならないことはたくさんあるようです.
中断したり、閉じたり、runnableを提供してそれらのタスクを実行したりします.
だからこの3つのクラスの関係はどのような関係なのでしょうか.
ExecutorServiceはExecutorを継承するので、言うまでもなく、すべてタスクを実行するためです.
ExecutorServiceはタスクを実行しますが、Futureはタスク実行の結果です.多分この関係です.
over!