Penyempurnaan API CompletableFuture
Kelas CompletableFuture diperkenalkan di Java 8 untuk mewakili Masa Depan yang dapat diselesaikan dengan menetapkan nilai dan statusnya secara eksplisit. Itu dapat digunakan sebagai java.util.concurrent.CompletionStage. Ini mendukung fungsi dan tindakan dependen yang dipicu setelah penyelesaian di masa depan. Di Java 9 CompletableFuture API telah ditingkatkan lebih lanjut. Berikut adalah perubahan relevan yang dilakukan pada API.
- Dukungan untuk penundaan dan waktu tunggu.
- Meningkatkan dukungan untuk subkelas.
- Metode pabrik baru ditambahkan.
Dukungan untuk penundaan dan waktu tunggu
public CompletableFuture<T> completeOnTimeout(T value, long timeout, TimeUnit unit)
Metode ini melengkapi CompletableFuture ini dengan nilai yang diberikan jika tidak diselesaikan sebelum batas waktu yang diberikan.
public CompletableFuture<T> orTimeout(long timeout, TimeUnit unit)
Metode ini secara luar biasa melengkapi CompletableFuture ini dengan TimeoutException jika tidak diselesaikan sebelum batas waktu yang diberikan.
Peningkatan dukungan untuk subkelas
public Executor defaultExecutor()
Ini mengembalikan Pelaksana default yang digunakan untuk metode asinkron yang tidak menentukan Pelaksana. Metode ini dapat diganti dalam subkelas untuk mengembalikan Pelaksana untuk menyediakan satu utas independen sebagai minimum.
public <U> CompletableFuture<U> newIncompleteFuture()
Mengembalikan tipe CompletableFuture baru yang tidak lengkap yang akan dikembalikan oleh metode CompletionStage. Subkelas dari kelas CompletableFuture harus mengganti metode ini untuk mengembalikan turunan dari kelas yang sama dengan CompletableFuture ini. Implementasi default mengembalikan instance kelas CompletableFuture.
Metode Pabrik Baru
public static <U> CompletableFuture<U> completedFuture(U value)
Metode pabrik ini mengembalikan CompletableFuture baru yang telah dilengkapi dengan nilai yang diberikan.
public static <U> CompletionStage<U> completedStage(U value)
Metode pabrik ini mengembalikan CompletionStage baru yang telah dilengkapi dengan nilai yang diberikan dan hanya mendukung metode yang ada di antarmuka CompletionStage.
public static <U> CompletionStage<U> failedStage(Throwable ex)
Metode pabrik ini mengembalikan CompletionStage baru yang telah diselesaikan secara luar biasa dengan pengecualian yang diberikan dan hanya mendukung metode yang ada di antarmuka CompletionStage.