什麼是使用春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