Skip to content

M10 · Bab 3± 50 menitDraf AI

ExecutorService dan CompletableFuture

Tujuan belajar

  • Menjalankan tugas di thread pool dengan ExecutorService alih-alih membuat Thread manual
  • Memakai submit, Future, dan invokeAll serta menutup executor dengan benar lewat try-with-resources
  • Menyusun alur asinkron dengan CompletableFuture — supplyAsync, thenApply, thenCombine, allOf
  • Menangani error dan batas waktu dengan exceptionally dan orTimeout
  • Menghindari jebakan ForkJoinPool.commonPool() untuk pekerjaan I/O

Prasyarat: Sinkronisasi dan Struktur Data Konkuren

Kuis

5 soal · lulus bila minimal 70% benar

1.Apa yang terjadi saat blok try (ExecutorService pool = Executors.newFixedThreadPool(3)) { pool.submit(tugas); } selesai (Java 19+)?
2.Tiga tugas masing-masing Thread.sleep(200) dikirim lewat invokeAll ke newFixedThreadPool(3). Berapa kira-kira waktu totalnya?
3.Apa output kode ini? CompletableFuture.supplyAsync(() -> Integer.parseInt("abc")).exceptionally(ex -> -1).thenApply(n -> n * 2).join()
4.Endpoint detail produk memanggil tiga layanan dengan supplyAsync(() -> httpCall()) tanpa executor. Saat beban naik, semua CompletableFuture lain di aplikasi ikut lambat. Penyebab paling mungkin?
5.Kamu perlu menunggu sepuluh CompletableFuture<Price> selesai lalu mengumpulkan hasilnya ke List<Price>. Pola yang tepat?

Jawab semua soal dulu (0/5)