エグゼキュータの代わりに、ExecutorServiceのためのいずれかのシナリオがあります。エグゼキュータ・インタフェースの背後にある意図?

マルクスSteppberger:

エグゼキュータの代わりExecutorServiceのを使用する理由がある場合、私は疑問に思って。

私の知る限りのない実装はありません知っているようにExecutorもないJDKのインターフェイスExecutorServiceあなたがそう何のメモリリークがないことをサービスをシャットダウンする必要があることを意味するが。あなたは、シャットダウンすることはできませんExecutorダウンが、あなたがそれを行うことができますExecutorService

だから、あなたがそのようなものを使用しているすべてのシナリオがあります:

private final Executor _executor = Executors.newCachedThreadPool();

背後にある意図は何ですかExecutorインターフェースは?例としては、感謝しています。

LppEdd:

Javadocはこのケースではあなたの友達です

このインタフェースは、などのスレッドの使用の詳細、スケジュール、などの各タスクを実行する方法の仕組みから、タスクの提出をデカップリングの方法を提供します

また、あなたが読んダウン

しかし、エグゼキュータ・インターフェースは、厳密には、実行が非同期である必要はありません。最も単純なケースでは、エグゼキュータは、呼び出し側のスレッドですぐに提出したタスクを実行することができます。

 class DirectExecutor implements Executor {
     public void execute(Runnable r) {
         r.run();
     }
 }

これらの定義は、すでに私には、表現されています。

あなたの使用例について。私見では、いや、私はそのようなこのインタフェースを使用することはありませんでしょう。
しかし、それは次のように使用されるかもしれない受け入れられた引数。

例えば私は、タスクを実行したいが、私は、このタスクを実行する方法を決定するために私の方法をユーザにしたいと思います。

public void run(final Executor taskExecutor) {
   taskExecutor.execute(this.myTaskRunnable);
}

Executor実装は、シーンの背後にある任意の可能性があり、それが同期(上記の例のように)または非同期かもしれないが、私は本当に気にしません。
それはだ、ユーザーにそれを扱うの世話をします。

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=168239&siteId=1