Sizin Future, bir ExecutorServiceyönteme yapılan bir çağrının sonucuysa (örn. submit()), En kolayı,CompletableFuture.runAsync(Runnable, Executor) onun yerine yöntemi kullanmaktır.
Nereden
Runnbale myTask = ... ;
Future<?> future = myExecutor.submit(myTask);
-e
Runnbale myTask = ... ;
CompletableFuture<?> future = CompletableFuture.runAsync(myTask, myExecutor);
Daha CompletableFuturesonra "yerel olarak" oluşturulur.
DÜZENLEME: @SamMefford yaparak yorumları edinerek bir geçirmek istiyorsanız, @MartinAndersson düzeltilebilir Callable, çağrıya gerek supplyAsync()dönüştürerek, Callable<T>bir içine Supplier<T>ile örneğin:
CompletableFuture.supplyAsync(() -> {
try { return myCallable.call(); }
catch (Exception ex) { throw new RuntimeException(ex); }
}, myExecutor);
Çünkü T Callable.call() throws Exception;bir istisna atar ve T Supplier.get();yapmaz, istisnayı yakalamanız gerekir, böylece prototipler uyumlu olur.