CompletableFuture zinciri
CompletableFuture kullanarak bloklamadan asenkron işlemleri zincirleme.
Kod Karşılaştırması
✕ Pre-Java 8
Future<String> future =
executor.submit(this::fetchData);
String data = future.get(); // blocks
String result = transform(data);
✓ Java 8+
CompletableFuture.supplyAsync(
this::fetchData
)
.thenApply(this::transform)
.thenAccept(IO::println);
Bu kodda bir sorun mu gördünüz? Bize bildirin.
Modern yöntem neden daha iyi
Zincirlenebilir
Asenkron adımları okunabilir bir hatta birleştirin.
Bloklama yok
Hiçbir iş parçacığı sonuçları beklemek için boşta durmaz.
Hata işleme
exceptionally() ve handle() ile temiz hata kurtarma.
Eski Yaklaşım
Bloklayan Future.get()
Modern Yaklaşım
CompletableFuture
JDK'dan itibaren
8
Zorluk
Orta
JDK Desteği
CompletableFuture zinciri
Mevcut
JDK 8'den itibaren geniş çapta kullanılabilir (Mart 2014)
Nasıl çalışır
CompletableFuture, bloklamayan asenkron hatlar sağlar. İşlemleri thenApply, thenCompose, thenAccept ile zincirleyin. Hataları exceptionally() ile işleyin. Birden fazla future'ı allOf/anyOf ile birleştirin.
İlgili Belgeler