簡體   English   中英

春季任務計划程序

[英]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方法將退出。 這應該不會超過毫秒。

如果schedulerjobExecutorService -由於您的xml的一部分丟失,我不能告訴它-它的線程將不會用於執行作業邏輯。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM