如何在Callable中完成exception处理

我知道可调用的调用可以将exception抛出到调用它的父方法,而runnable不是这种情况。

我想知道如何因为它是一个线程方法,并且是线程堆栈的最底层方法。

Callable是将您的exception抛出到您的调用线程,例如,当您获得提交callableFuture的结果时。

 public class CallableClass implements Callable { ... } ExecutorService executor = new ScheduledThreadPoolExecutor(5); Future future = executor.submit(callable); try { System.out.println(future.get()); } catch (Exception e) { // do something } 

Callable.call() 不能是最底层的堆栈帧。 它总是被另一个方法调用,然后捕获exception。 Callable通常应该用于异步计算值,然后使用Future对象获取它们。 当您尝试获取Future的值时,该操作可能会抛出稍后重新抛出的exception。

Runnable只是运行一个不返回任何东西的操作。 所有exception处理都应该在Runnable完成,因为不清楚如何处理Runnable.run()抛出的任何exception。 (来自Callable的例外通常会返回给具有Future的调用者)