gpt4 book ai didi

java - 捕获主线程中工作线程创建的异常

转载 作者:行者123 更新时间:2023-11-30 03:47:26 25 4
gpt4 key购买 nike

我们如何处理主线程中ThreadPoolTask​​Executor启动的线程产生的异常?

public static void main(String[] args){
ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
ThreadPoolTaskExecutor executer = (ThreadPoolTaskExecutor)context.getBean("taskExecutor_test");

for(int i=0; i<5; i++){
executer.execute(new RunnableImpl()); //If any of the thread create exception
}

//need to catch the exceptions here.
}

[就像我们在普通线程中对“setUncaughtExceptionHandler”所做的那样]

最佳答案

将任务提交到 ThreadPoolTask​​Executor 时,您希望这些任务异步运行,因此您的代码无法捕获并处理异常,除非您阻塞并等待让它们发生。

为此,请使用 ThreadPoolTaskExecutor#submit(Runnable)它返回一个Future。然后您可以调用Future#get()阻塞当前线程并等待任务完成或抛出异常(任务完成(失败))。如果它是一个长时间运行的任务,您还可以使用其 Future#isDone() 或重载的 get(..) 方法轮询其完成情况。

关于java - 捕获主线程中工作线程创建的异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25283713/

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