Hỏi về việc sử dụng Completablefuture trong dự án thực tế
<div class="markdown-block">Em chào anh Dũng và mọi người ạ!Dạo gần đây em đang đọc phần về CompletableFuture trong cuốn Modern Java In Action. Sau khi tìm hiểu thì em thấy CompletableFuture khá hữu ích với các tác vụ liên quan đến I/O, chẳng hạn như gọi API từ các hệ thống bên ngoài.Ví dụ, nếu cần gọi đồng thời hai API thì có thể viết như sau:</div><div class="markdown-block">CompletableFuture<String> future1 =</div><div class="markdown-block">CompletableFuture.supplyAsync(api::callApi1);</div><div class="markdown-block">CompletableFuture<String> future2 =</div><div class="markdown-block">CompletableFuture.supplyAsync(api::callApi2);</div><div class="markdown-block">Theo cách hiểu của em, callApi1() và callApi2() sẽ được thực thi song song trên các thread khác. Nhờ vậy, thread xử lý request không phải chờ từng API hoàn thành rồi mới gọi API tiếp theo, nên tổng thời gian phản hồi có thể được rút ngắn đáng kể.Tuy nhiên, em cũng nghĩ rằng cách này cần quản lý thread cẩn thận, chẳng hạn sử dụng thread pool phù hợp. Nếu mỗi request đều tạo quá nhiều thread mới thì có thể gây lãng phí tài nguyên, thậm chí ảnh hưởng đến hiệu năng hoặc độ ổn định của server.Em có một vài thắc mắc muốn xin ý kiến mọi người: Trong thực tế, CompletableFuture có được sử dụng nhiều để xử lý các tác vụ I/O như thế này không? Các dự án production có áp dụng phổ biến kh</div>