gpt4 book ai didi

java - 如何从父线程中注意到异常?

转载 作者:搜寻专家 更新时间:2023-10-31 08:27:41 24 4
gpt4 key购买 nike

我正在将线程提供给 ExecutorService

这些线程正在处理一些数据,如果发生冲突,数据对象会抛出一个异常,该异常会被冲突的线程捕获,然后中止并且不会完成执行。

发生这种情况时,需要将中止线程放回队列中并反馈给执行器。

如何判断父线程是否抛出异常?

最佳答案

当您在 ExecutorServicesubmit() 一个任务时,您会得到一个 Future 作为结果。执行完成后,您可以在那个 future 调用 get()。如果适用,这将返回结果,或者如果原始任务抛出一个,它将抛出一个 ExecutionException。如果您想要真正的异常对象,您可以执行 getCause()

另请注意,您会将 Task 放回服务中,该任务在 Thread 上运行,该线程尚未真正终止(只是捕获异常并且是等待新的)。

这是一个示例用法(如果您不关心结果,可以使用 Runnable)。

Callable<String> myCallable = ...;
Future<String> future = myExector.submit(myCallable);

// Do something else until myCallable.isDone() returns true.
try {
String result = future.get();
}catch(ExecutionException e){
// Handle error, perhaps create new Callable to submit.
}

关于java - 如何从父线程中注意到异常?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13796767/

24 4 0
文章推荐: java - 许多 JButton 的一个 ActionListener
文章推荐: ios - 带有 Swift UIApplication 子类的 Objective-C 项目。错误 : class not loaded
文章推荐: swift - swift playground 中单表达式闭包的隐式返回
文章推荐: javascript - 带有背景图片的自定义形状
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com