[英]Task Scheduler in Spring
我正在使用Spring Scheduler任務在固定間隔后在類中調用方法,如下所示
<task:scheduled-tasks scheduler="scheduler">
<task:scheduled ref="processScheduledJobs" method="init" fixed-delay=5000/>
一旦調度程序觸發了init方法。 init方法將使用線程池執行程序執行隊列中的所有作業。
<bean id="processScheduledJobs" class="XXXX.VV.ProcessScheduledJobs">
<property name="pool" ref="jobExecutorService"" />
</bean>
<bean id="scheduler" class="org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor">
<property name="threadFactory">
<bean class="XXX..VVV.NamingThreadFactory">
<constructor-arg value="thread" />
</bean>
</property>
<property name="corePoolSize" value="16" />
<property name="maxPoolSize" value="64" />
<property name="keepAliveSeconds" value="4" />
<property name="queueCapacity" value="512" />
</bean>
問題:執行init方法的初始線程是否一直等到init方法中的所有處理(通過執行器服務通過生成新線程完成)之后?
調度程序任務的池大小屬性僅用於觸發任務,而不用於執行或處理已觸發任務中的邏輯。
屬於scheduler
線程會將所有作業提交給jobExecutorService
。 其中多達64個將立即開始執行,其余的多達512個將最終進入隊列。 一旦所有提交(不執行),init方法將退出。 這應該不會超過毫秒。
如果scheduler
與jobExecutorService
-由於您的xml的一部分丟失,我不能告訴它-它的線程將不會用於執行作業邏輯。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.