gpt4 book ai didi

java - 重新抛出异常的ExecutorService

转载 作者:行者123 更新时间:2023-12-01 09:34:59 26 4
gpt4 key购买 nike

我需要使用任何 ExecutorExecutorService 执行任务。任务(CallableRunnable)应该无限运行,但如果出现任何异常,则应将其重新抛出到提交任务的线程。

我知道 future.get() 会为我抛出 ExecutionException:

  ExecutorService executor = Executors.newSingleThreadExecutor();
Future<?> future = executor.submit(new Task());
future.get();

但是,在阳光灿烂的日子里,我无限期地阻止 future.get(),因此我无法使用它。

是否有可能有任何Executor在底层任务失败时简单地抛出异常?

最佳答案

我认为仅使用 Executors 不可能做到这一点。
您可以考虑在任务中使用 try-catch block ,并将异常添加到 catch block 中的队列中。

try{
//perform task
}catch(Exception e){
queue.offer(e)
}

创建一个从队列中读取异常的线程。

public void run() {
Exception e;
try {
e = q.take();
e.printStackTrace();
} catch (InterruptedException e1) {
// TODO Auto-generated catch block
}
}

关于java - 重新抛出异常的ExecutorService,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39065031/

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