gpt4 book ai didi

java - Spring ThreadPoolTask​​Executor 配置?

转载 作者:行者123 更新时间:2023-11-30 09:18:10 26 4
gpt4 key购买 nike

我正在使用 Spring 2.5 ThreadPoolTask​​Executor,如下所示。

<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>

java代码:

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"));

以上代码运行良好,没有任何问题。我的问题是,ThreadPoolTask​​Executor 是异步的,这意味着它不会等到任务完成。它只是触发并忘记了。如果任何执行调用抛出任何异常,我需要捕获它并发送电子邮件。

为了做到这一点,我怎样才能让进程等到 taskExecutor 的执行方法完成才能知道它是否抛出任何异常?

此外,我的配置中的 WaitForTasksToCompleteOnShutdown 是什么?

我什么时候可以调用taskExecutor.shutdown();?请帮帮我好吗?

谢谢!

最佳答案

你可以调用 submit() 而不是 execute() 并得到一个 Future 返回,它会告诉你是否有错误;这样做的缺点是您必须进行阻塞调用才能找到错误。

更好(或者至少,更异步)的解决方案是在 PrintTask 中处理错误:

@Override
public void run() {
try {
doPrintTaskStuff();
} catch (Throwable t) {
sendEmailAboutException(t);
}
}

关于java - Spring ThreadPoolTask​​Executor 配置?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18633671/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com