Runnable runnable = () -> {};
ListenableFuture<?> future = executor.submit(runnable);
FutureCallback<?> callback = new FutureCallback() {
@Override
public void onSuccess(Object result) {}
@Override
public void onFailure(Throwable t) {}
};
Futures.addCallback(future, callback, executor);
Этот код отправляет Runnable для выполнения и затем планирует обратный вызов, который вызывается после завершения runnable, но на том же ExecutorService .
Iхотите узнать о режиме сбоя, при котором работоспособность запланирована успешно, но исполнитель выключен перед вызовом обратного вызова. Как я могу захватить исключение, представляющее этот режим сбоя, и обработать любую необходимую очистку?
Мое чтение источника Guava предполагает, что RejectedExecutionException проглочена и зарегистрирована. Мне нужно иметь возможность захватить это исключение и закрыть ресурсы. Это возможно?