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.
Hatalı
Bölüm başlığı “Hatalı”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}Düzeltme
Bölüm başlığı “Düzeltme”Bloklayıcı get()/join() yerine thenApply/thenCompose ile asenkron olarak zincirleyin ve future’ı döndürün.