Как мне обработать выключение исполнителя в обратном вызове Guava? - PullRequest
2 голосов
/ 29 октября 2019
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 проглочена и зарегистрирована. Мне нужно иметь возможность захватить это исключение и закрыть ресурсы. Это возможно?

...