CompletableFuture API İyileştirmeleri
CompletableFuture sınıfı, değeri ve durum açıklığı ayarlanarak tamamlanabilen Geleceği temsil etmek için Java 8'de tanıtıldı. Java.util.concurrent.CompletionStage olarak kullanılabilir. Geleceğin tamamlanmasıyla tetiklenen bağımlı işlevleri ve eylemleri destekler. Java'da 9 CompletableFuture API daha da geliştirildi. API'ye yapılan ilgili değişiklikler aşağıdadır.
- Gecikmeler ve zaman aşımları için destek.
- Alt sınıflandırma için geliştirilmiş destek.
- Yeni fabrika yöntemleri eklendi.
Gecikmeler ve zaman aşımları için destek
public CompletableFuture<T> completeOnTimeout(T value, long timeout, TimeUnit unit)
Bu yöntem, bu CompletableFuture'u, verilen zaman aşımından önce başka şekilde tamamlanmadıysa, verilen değerle tamamlar.
public CompletableFuture<T> orTimeout(long timeout, TimeUnit unit)
Bu yöntem, belirtilen zaman aşımından önce başka türlü tamamlanmadıysa, bu CompletableFuture'u bir TimeoutException ile istisnai olarak tamamlar.
Alt sınıflandırma için geliştirilmiş destek
public Executor defaultExecutor()
Bir Executor belirtmeyen zaman uyumsuz yöntemler için kullanılan varsayılan Yürütücüyü döndürür. Bu yöntem alt sınıflarda geçersiz kılınabilir ve bir Yürütücünün minimum olarak bir bağımsız iş parçacığı sağlaması için döndürülebilir.
public <U> CompletableFuture<U> newIncompleteFuture()
CompletionStage yöntemiyle döndürülecek türde yeni bir tamamlanmamış CompletableFuture döndürür. CompletableFuture sınıfının alt sınıfları, bu CompletableFuture ile aynı sınıfın bir örneğini döndürmek için bu yöntemi geçersiz kılmalıdır. Varsayılan uygulama CompletableFuture sınıfının bir örneğini döndürür.
Yeni fabrika Yöntemleri
public static <U> CompletableFuture<U> completedFuture(U value)
Bu fabrika yöntemi, verilen değerle zaten tamamlanmış yeni bir CompletableFuture döndürür.
public static <U> CompletionStage<U> completedStage(U value)
Bu fabrika yöntemi, belirtilen değerle zaten tamamlanmış yeni bir CompletionStage döndürür ve yalnızca CompletionStage arayüzünde bulunan yöntemleri destekler.
public static <U> CompletionStage<U> failedStage(Throwable ex)
Bu fabrika yöntemi, belirtilen istisna ile istisnai bir şekilde tamamlanmış yeni bir CompletionStage döndürür ve yalnızca CompletionStage arayüzünde bulunan yöntemleri destekler.