我正在使用 Spring 2.5 ThreadPoolTaskExecutor
,如下所示。
<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>
爪哇代码:
ThreadPoolTaskExecutor taskExecutor = (ThreadPoolTaskExecutor) context.getBean("taskExecutor");
taskExecutor.execute(new PrintTask("Thread 1"));
taskExecutor.execute(new PrintTask("Thread 2"));
taskExecutor.execute(new PrintTask("Thread 3"));
taskExecutor.execute(new PrintTask("Thread 4"));
taskExecutor.execute(new PrintTask("Thread 5"));
上面的代码工作正常,没有任何问题。我的问题是,ThreadPoolTaskExecutor
是异步的,这意味着它不会等到任务完成。它只是开火然后忘记。如果任何执行调用引发任何异常,我需要捕获它并发送电子邮件。
为了做到这一点,我怎样才能让进程等到 taskExecutor 的执行方法完成才能知道它是否抛出任何异常?
另外,WaitForTasksToCompleteOnShutdown
我的配置中有什么?
我什么时候可以打电话taskExecutor.shutdown();
?请帮我?
谢谢!