Spring ThreadPoolTaskExecutor vs Java Executorservice cachedthreadpool [已关闭]

2022-09-01 10:01:58

使用有什么优点和缺点

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

只是想知道使用它们的灵活性。


答案 1

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

ThreadPoolTaskExecutor Doc

另一方面,ExecutorService CachedThreadPool是很好的实用程序,可以共享您最近未充分利用的线程(小于60秒)。需要指出的是,CachedThreadPool不是其方法的单独类(newCachedThreadPool())。

CachedThreadPool Doc


答案 2

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

执行者服务

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

ThreadPoolTaskExecutor

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


推荐