Spring ThreadPoolTask​​Executor vs Java Executorservice cachedthreadpool

时间:2014-07-23 06:52:14

标签: java spring concurrency

使用

的优点和缺点是什么

Spring ThreadPoolTaskExecutor vs Java Executorservice cachedthreadpool,即使spring是Java并发的包装。

想了解使用它们的灵活性。

2 个答案:

答案 0 :(得分:14)

使用spring的 ThreadPoolTask​​Executor 的一个额外优势是它非常适合管理和监控(例如通过JMX ),提供了几个有用的属性:“corePoolSize”,“maxPoolSize”,“keepAliveSeconds”(运行时支持所有更新); “poolSize”,“activeCount”。

除此之外,如果您已经在应用程序中实施了弹簧注射,那么使用它显然很简单。通过使用它,您可以通过setter注入直接注入线程池,如下所示:

<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> 

ThreadPoolTaskExecutor Doc

另一方面,

ExecutorService CachedThreadPool 可以很好地分享您最近使用不足的线程( 60秒以下)。重要的是要指出CachedThreadPool不是单独的类 它的方法(newCachedThreadPool())。

CachedThreadPool Doc

答案 1 :(得分:2)

谷歌搜索后,您将获得以下内容:

<强>的ExecutorService

java.util.concurrent.ExecutorService接口表示一个能够在后台执行任务的异步执行机制。因此,ExecutorService非常类似于线程池。实际上,java.util.concurrent包中存在的ExecutorService的实现是一个线程池实现。

<强> ThreadPoolTask​​Executor类

此实现只能在Java 5环境中使用,但也是该环境中最常用的实现。它公开了bean属性,用于配置java.util.concurrent.ThreadPoolExecutor并将其包装在TaskExecutor中。如果你需要一些高级的东西,比如ScheduledThreadPoolExecutor,建议你改用ConcurrentTaskExecutor。