java - 从java中的线程中获取异常

标签 java multithreading exception future

我对我的代码有疑问。

我有两个线程从主方法运行,我想捕获主方法中两个线程中任何一个线程中可能发生的异常。

Future<Object> incoming=Executors.newSingleThreadExecutor().submit(new Task1(param1));
Future<Object> outgoing=Executors.newSingleThreadExecutor().submit(new Task2(param2));

问题是,如果我使用 Future 对象并调用 get() 方法来处理异常,它将阻塞我的代码并且我不知道线程 2 是否在线程 1 之前完成/抛出异常。

我怎样才能优雅地处理这个而不是这个?

while(!(incoming.isDone() || outgoing.isDone())){}

最佳答案

如果您想在异常发生时立即处理而不是等待任何其他任务完成,我会异步处理异常。

 ExecutorService oneService = ...

 oneService.submit(new Runnable() {
    public void run() {
        try {
            new Task(param1).run();
        } catch(Exception e) {
            // handle exception asynchronously
        }
    }        
 });

关于java - 从java中的线程中获取异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11650812/

相关文章:

java - 嵌套循环和超时

c - 溢出与信息

Java : Impossible to parse "23/10/1973" with "dd/MM/yyyy HH:mm" format

c++ - try block 会保护局部变量的破坏吗?

java - 如何在 Kotlin 计算器应用程序中重置变量

java - iText7 - Html2Pdf Jar 和源代码

java - volatile 与非 volatile

java - Java 的双向可扩展层次结构

java - JLayeredPane:深度和位置之间的功能区别是什么?

c++ - 围绕整数 getter 和 setter 的关键部分是否多余?