java并发编程
如果你希望你的任务由于发生异常而失败时候获取通知,并且执行一些特定的子任务的恢复操作,那么可以将任务封装在能捕获异常的Runnable 或者 Callable中,或者改写ThreadPoolExecutro的afterExecutor方法。
但是,只有通过executor提交的任务,才能将它抛出的异常交给未捕获异常处理器,而通过submit提交的任务,无论是抛出的未检查异常还是已检查异常,都将认为是任务返回状态的一部分,如果一个由 submit提交的任务由于抛出了异常而结束,那么这个异常将被Future.get封装在ExecutorException中重新抛出。