İçeriğe geç

Eşzamanlı İçinde Asenkron (ARCH4023)

Anahtar java.async.blocking-future-get · Önem error · Kategori async

Senkron bir bağlamda asenkron bir işlem üzerinde get()/join() ile bloklamak deadlock’a ve thread havuzu tükenmesine yol açabilir, ayrıca asenkronluğun amacını ortadan kaldırır.

public Report build() {
CompletableFuture<Data> f = fetchAsync();
Data data = f.get(); // senkron bloklama
return render(data);
}
public CompletableFuture<Report> build() {
return fetchAsync()
.thenApply(this::render); // zincirle, blokla bekleme
}

Bloklayıcı get()/join() yerine thenApply/thenCompose ile asenkron olarak zincirleyin ve future’ı döndürün.