web-dev-qa-db-ja.com

Spring ThreadPoolTask​​Executor vs Java Executorservice cachedthreadpool

使用の長所と短所は何ですか

Spring ThreadPoolTask​​Executor vs Java Executorservicecachedthreadpool springはJava並行性。

それらを使用する際の柔軟性を知りたいだけです。

26
BalaB

春のThreadPoolTask​​Executorを使用することの追加された利点の1つは、管理と監視に適していることです(例:through JMX)、いくつかの有用な属性を提供: "corePoolSize"、 "maxPoolSize"、 "keepAliveSeconds"(実行時のすべての更新をサポート); 「poolSize」、「activeCount」。

それとは別に、すでにアプリケーションにスプリング注入が実装されている場合は、明らかに簡単に使用できます。それを使用すると、以下のようにセッターインジェクションによってスレッドプールを直接インジェクトでき​​ます:

<bean id="taskExecutor"
    class="org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor">
    <property name="corePoolSize" value="5" />
    <property name="maxPoolSize" value="10" />
    <property name="WaitForTasksToCompleteOnShutdown" value="true" />
</bean> 

ThreadPoolTask​​Executor Doc

一方ExecutorService CachedThreadPoolは、最新の使用率の低いスレッドを共有するための優れたユーティリティです(60秒未満)。 CachedThreadPoolはそのメソッド(newCachedThreadPool())の別個のクラスではないことを指摘することが重要です。

CachedThreadPool Doc

14
Pra Jazz

グーグルの後、次のものが得られます:

Executorservice

Java.util.concurrent.ExecutorServiceインターフェースは、バックグラウンドでタスクを実行できる非同期実行メカニズムを表します。したがって、ExecutorServiceはスレッドプールに非常に似ています。実際、Java.util.concurrentパッケージに存在するExecutorServiceの実装は、スレッドプールの実装です。

ThreadPoolTask​​Executor

この実装は、Java 5環境でのみ使用できますが、その環境で最も一般的に使用されています。Java.util.concurrent.ThreadPoolExecutorを構成するためのBeanプロパティを公開し、 TaskExecutor:ScheduledThreadPoolExecutorなどの高度なものが必要な場合は、代わりにConcurrentTaskExecutorを使用することをお勧めします。

2
mkazma