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 khiCompletableFuture
thực hiện xong với các methodthenRun
,thenAccept
,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 methodthenRunAsync
,thenAcceptAsync
,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 methodhandle
,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 methodallOf
(ví dụ cả hành động 1 và hành động 2 xong thì mới bắt đầu hành động 3)
- Thực hiện các tính toán theo một thứ tự với method
References: