CompletableFuture sebagai Asynchronous Pemograman Java

Firman
2 min readOct 27, 2019

--

Synchronous vs Asynchronous

Sebelum bahas apa itu Completable Future, ada baiknya kita mengetahui sedikit tentang Synchronous dan Asynchronous.

Synchronous merupakan sebuah model Thread yang ditugaskan untuk mengerjakan sebuah task sampai selesai, lalu dapat melanjutkan ke task yang lain. Sedangkan Asynchronous merupakan sebuah Thread yang ditugaskan untuk mengerjakan banyak task dalam waktu yang bersamaan tanpa perlu menunggu task yang sebelumnya selesai. Salah satu fitur pada Java untuk mengimplementasikan Asynchronous itu sendiri yaitu Completable Future.

Completable Future

2 Fitur utama pada Completable future yaitu runAsync() dan supplyAsync()

  • CompletableFuture.runAsync(): untuk menjalankan asynchronous tasks tanpa mengembalikan return result apapun pada suatu function <Void>.
  • CompletableFuture.supplyAsync(): untuk menjalankan asynchronous tasks dengan mengembalikan return result pada suatu function sesuai tipe data yang kita inginkan.

Callbacks of Completable Future

Ada beberapa callback dari Completable future itu sendiri yaitu thenApply() , thenAccept , thenRun()

ThenApply() berjalan pada thread yang sama untuk memproses dan mengubah suatu value dari Completable Future dengan return sesuai tipe data contoh di bawah ini mengembalikan result String.

Es Pisang Ijo rasanya manis dengan harga murah.
  • thenAccept()

ThenAccept() sama seperti ThenApply() hanya saja result yang dikembalikan bertipe <void>

Watermelon is Red

thenRun() digunakan untuk tidak mengembalikan hasil apapun namun tetap dapat menjalankan program didalamnya.

thenApplyAsync() tidak jauh berbeda dengan thenApply(), hanya saja thenApply() dijalankan di thread yang sama, sedangkan thenApplyAsync() akan menjalankan dengan thread yang berbeda di dalam SupplyAsync() yang sama.

Completable Future as a Return

Cara untuk menggabungkan dua atau lebih Completable Future, diantaranya menggunakan thenCompose() dan thenCombine(). Singkatnya jika thenApply() mengembalikan sebuah value yang spesifik, maka thenCompose() dan thenCombine() akan mengembalikan CompletableFuture lainnya.

perbedaanya jika ThenCompose() mengembalikan CompletableFuture yang dengan ketergantungan pada CompletableFuture lainnya, maka ThenCombine() tidak memiliki ketergantungan dengan CompletableFuture lainnya atau berjalan secaran independen.

--

--