2011-11-08 31 views
0

春季org.springframework.scheduling.TaskScheduler不同於JDK java.util.concurrent.ScheduledExecutorService的方式,它不允許調度java.util.concurrent.Callable具有固定延遲(它可以只安排java.lang.Runnable多個)。通過彈簧調度的java.util.concurrent.Callable裝置

是否有支持調度Callable的彈出式替代方案ScheduledExecutorService可用(即在上下文銷燬時自動關閉)?

+0

Runnable有什麼問題? – tolitius

+0

它不允許返回結果。 –

+0

你是對的,你可以將一個Callable提交給[ThreadPoolTask​​Scheduler](http://static.springsource.org/spring/docs/3.0.x/javadoc-api/org/springframework/scheduling/concurrent/ThreadPoolTask​​Scheduler.html #submit(java.util.concurrent.Callable)),但是你只能調度一個Runnable。爲什麼不能直接使用ScheduledExecutorService? – tolitius

回答

2

如果你需要的僅僅是關機,使用destroy-method

<bean id="threadPool" class="java.util.concurrent.Executors" 
     factory-method="newFixedThreadPool" 
     destroy-method="shutdown"> 
    <constructor-arg type="int" value="6"/> 
</bean> 

作品就好了我們。

PS。您可能需要使用factory-method="newScheduledThreadPool"