Çalıştır ve Unut Görevi (ARCH4021)
Anahtar java.async.ignored-future · Önem warning · Kategori async
Bir CompletableFuture veya görev, beklenmeden, atanmadan ya da döndürülmeden ifade olarak üretildiğinde istisnalar kaybolur ve çalışma sırası belirsiz hale gelir. Sonuç asla gözlemlenmez.
Hatalı
Bölüm başlığı “Hatalı”void process(List<Order> orders) { for (Order o : orders) { CompletableFuture.runAsync(() -> save(o)); // sonuç yok sayıldı }}void process(List<Order> orders) { List<CompletableFuture<Void>> futures = new ArrayList<>(); for (Order o : orders) { futures.add(CompletableFuture.runAsync(() -> save(o))); } CompletableFuture.allOf(futures.toArray(new CompletableFuture[0])).join();}Düzeltme
Bölüm başlığı “Düzeltme”Üretilen future’ı bir değişkene atayıp join()/get() ile bekleyin veya çağırana döndürün.