使用
的优点和缺点是什么 Spring ThreadPoolTaskExecutor vs Java Executorservice cachedthreadpool
,即使spring是Java并发的包装。
想了解使用它们的灵活性。
答案 0 :(得分:14)
使用spring的 ThreadPoolTaskExecutor 的一个额外优势是它非常适合管理和监控(例如通过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>
另一方面,ExecutorService CachedThreadPool 可以很好地分享您最近使用不足的线程( 60秒以下)。重要的是要指出CachedThreadPool不是单独的类 它的方法(newCachedThreadPool())。
答案 1 :(得分:2)
谷歌搜索后,您将获得以下内容:
<强>的ExecutorService 强>
java.util.concurrent.ExecutorService接口表示一个能够在后台执行任务的异步执行机制。因此,ExecutorService非常类似于线程池。实际上,java.util.concurrent包中存在的ExecutorService的实现是一个线程池实现。
<强> ThreadPoolTaskExecutor类强>
此实现只能在Java 5环境中使用,但也是该环境中最常用的实现。它公开了bean属性,用于配置java.util.concurrent.ThreadPoolExecutor并将其包装在TaskExecutor中。如果你需要一些高级的东西,比如ScheduledThreadPoolExecutor,建议你改用ConcurrentTaskExecutor。