Meningkatkan Konkurensi Java: Peningkatan Utama pada API CompletableFuture
Kelas CompletableFuture diperkenalkan dalam Java 8 untuk mewakili Future yang dapat diselesaikan dengan menetapkan nilainya dan statusnya secara eksplisit. Ia dapat digunakan sebagai java.util.concurrent.CompletionStage. Ia mendukung fungsi dan aksi dependen yang dipicu setelah penyelesaian future. Di Java 9 API CompletableFuture telah ditingkatkan lebih lanjut. Berikut adalah perubahan yang relevan yang dilakukan pada API.
- Dukungan untuk penundaan dan waktu tunggal.
- Dukungan yang ditingkatkan untuk subclassing.
- Metode pabrik baru ditambahkan.
Dukungan untuk penundaan dan waktu tunggal
public CompletableFuture<T> completeOnTimeout(T value, long timeout, TimeUnit unit)
Metode ini menyelesaikan CompletableFuture ini dengan nilai yang diberikan jika belum diselesaikan sebelum waktu tunggal yang diberikan.
public CompletableFuture<T> orTimeout(long timeout, TimeUnit unit)
Metode ini secara eksepsional menyelesaikan CompletableFuture ini dengan TimeoutException jika belum diselesaikan sebelum waktu tunggal yang diberikan.
Dukungan yang ditingkatkan untuk subclassing
public Executor defaultExecutor()
Ia mengembalikan Executor default yang digunakan untuk metode async yang tidak menentukan Executor. Metode ini dapat dioverride dalam subclass untuk mengembalikan Executor yang menyediakan setidaknya satu thread independen.
public <U> CompletableFuture<U> newIncompleteFuture()
Mengembalikan CompletableFuture baru yang belum selesai dari tipe yang akan dikembalikan oleh metode CompletionStage. Subclass dari kelas CompletableFuture harus mengoverride metode ini untuk mengembalikan instance dari kelas yang sama seperti CompletableFuture ini. Implementasi default mengembalikan instance dari kelas CompletableFuture.
Metode Pabrik Baru
public static <U> CompletableFuture<U> completedFuture(U value)
Metode pabrik ini mengembalikan CompletableFuture baru yang sudah selesai dengan nilai yang diberikan.
public static <U> CompletionStage<U> completedStage(U value)
Metode pabrik ini mengembalikan CompletionStage baru yang sudah selesai 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 sudah selesai secara eksepsional dengan pengecualian yang diberikan dan hanya mendukung metode yang ada di antarmuka CompletionStage.