什么是使用春ThreadPoolTaskExecutor类和Java的ExecutorService cachedthreadpool
春ThreadPoolTaskExecutor和Java Executorservicecachedthreadpool
即使春天是Java并发的包装的优点和缺点。
只想知道使用它们的灵活性。
什么是使用春ThreadPoolTaskExecutor类和Java的ExecutorService cachedthreadpool
春ThreadPoolTaskExecutor和Java Executorservicecachedthreadpool
即使春天是Java并发的包装的优点和缺点。
只想知道使用它们的灵活性。
一种使用弹簧的ThreadPoolTaskExecutor类的附加优点是它非常适合用于管理和监控(例如通过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>
的ExecutorService CachedThreadPool是好的工具来分享下使用线程最近的(在60:通过它,你可以通过Setter注入直接注入线程池如下图所示秒)。指出CachedThreadPool不是单独的类 其方法(newCachedThreadPool())是很重要的。
我看到到处corePoolSize的 “值= ”5“” maxPoolSize值“value =”10“not other no,它背后的逻辑是什么? –
为什么我不能做同样的事情,例如原始的java.util.concurrent.ThreadPoolExecutor?它还公开了setter/getter方法我不明白为什么Spring的ThreadPoolTaskExecutor在JMX(我没有使用它)或XML属性配置时有帮助,当它具有“public void setMaxPoolSize(int maxPoolSize)”时,而原始的java.util.concurrent.ThreadPoolExecutor也有“公共无效setMaximumPoolSize(INT maximumPoolSize)”我的意思是,它增加 – Ruslan
至于“在运行时支持更新”什么样的价值。 - 不生java.util.concurrent.ThreadPoolExecutor中支持它,以及根据?例如,javadoc ,setMaximumPoolSize()它会处理这种情况。 – Ruslan
谷歌搜索后,您将获得以下:
的ExecutorService
的java.util.concurrent.ExecutorService中接口表示异步执行机制,它能够在后台执行任务。因此ExecutorService与线程池非常相似。实际上,java.util.concurrent包中存在的ExecutorService的实现是一个线程池实现。
ThreadPoolTaskExecutor类
这个实现只能在Java 5环境中使用,但也是最常用的一个在那样的环境。它公开用于配置java.util.concurrent.ThreadPoolExecutor的bean属性并将其包装在TaskExecutor中。如果你需要一些高级的东西,如ScheduledThreadPoolExecutor,建议你改用ConcurrentTaskExecutor。
[ThreadPoolTaskExecutor的最新Spring(4.1.x)文档](http://docs.spring。IO /弹簧/文档/ 4.1.x的/ Javadoc的API /组织/ springframework的/调度/并发/ ThreadPoolTaskExecutor.html)具有到Java 5.没有参考 – herman
似乎是一个很好的问题谷歌。 –
它们是一样的:ThreadPoolExecutor是ExecutorService的一个实例。你应该阅读javadoc。 –
如果您使用'Spring'开发App,那么使用[ThreadPoolTaskExecutor](http://docs.spring.io/spring/docs/3.0.x/api/org/springframework/scheduling/concurrent/ThreadPoolTaskExecutor.html ),否则使用[Executorservice](http://docs.oracle.com/javase/7/docs/api/java/util/concurrent/ExecutorService.html),因为它将独立于'Spring'并可用于其他任何地方。 – Ambrish