So sánh Future và CompletableFuture trong Java

So sánh Future và CompletableFuture trong Java.

(Xem thêm: Code ví dụ Future trong Java)

(Xem thêm: Code ví dụ CompletableFuture trong Java)

Future và CompletableFuture là gì?

Future là một tính năng cung cấp từ Java 5. Future là kết quả trả về của một tính toán bất đồng bộ (khi tính toán nó sẽ tạo ra một thread riêng để chạy và sau đó trả về kết quả vào Future)

CompletableFuture được cung tấp từ Java 8, nó thực hiện implements lại Future và khắc phục, bổ sung các hạn chế mà Future chưa xử lý được.

Sự khác nhau giữa Future và CompletableFuture

CompletableFuture implements từ Future do đó nó có thể làm tất cả những gì mà Future cung cấp.

Ngoài ra CompletableFuture còn implements CompletionStage nên nó thể khắc phục các hạn chế mà Future chưa thể làm được như:

  • CompletableFuture thông báo và cho phép lắng nghe sự kiện hoàn thành, ta có thể xử lý dữ liệu, thêm các hành động khi CompletableFuture thực hiện xong với các method thenRunthenAccept, thenApply, handle, thenApply...
  • CompletableFuture hỗ trợ xử lý async và cả sync cho các hành động xử lý dữ liệu với  các method thenRunAsyncthenAcceptAsync, thenApplyAsync, handleAsync, thenApplyAsync...
  • Ta có thể bắt CompletableFuture hoàn thành và trả về một giá trị mặc định nào đó
  • CompletableFuture cho phép xử lý exception với method handle, handleAsync
  • CompletableFuture cho phép xử lý kết hợp nhiều tính toán bất đồng bộ với nhau như
    • Thực hiện các tính toán theo một thứ tự với method thenApply, thenRun, thenAccept(Ví dụ hành động 1 xong thì mới bắt đầu hành động 2)
    • bắt sự kiện khi nhiều CompletableFuture hoàn thành với method allOf (ví dụ cả hành động 1 và hành động 2 xong thì mới bắt đầu hành động 3)

 

 

References:

https://docs.oracle.com/javase/…/CompletableFuture.html

https://docs.oracle.com/…/Future.html

stackjava.com