Tôi đang viết một ứng dụng bằng Java sử dụng ExecutorService để chạy nhiều luồng.Theo dõi các tác vụ đã hoàn thành trong ExecutorService
Tôi muốn gửi nhiều tác vụ (hàng nghìn lần một lần) cho Người thi hành dưới dạng Cuộc gọi và khi hoàn tất, hãy truy xuất kết quả của họ. Cách tôi tiếp cận điều này là mỗi khi tôi gọi hàm submit(), tôi nhận được một tương lai mà tôi lưu trữ trong một ArrayList. Sau đó, tôi chuyển Danh sách tới một chuỗi liên tục lặp lại nó, gọi hàm future.get() với thời gian chờ để xem tác vụ đã hoàn thành chưa. đây có phải là cách tiếp cận đúng hay là quá kém hiệu quả?
CHỈNH SỬA --- Thông tin thêm --- Một vấn đề khác là mỗi Cuộc gọi có thời gian xử lý khác nhau. Vì vậy, nếu tôi chỉ cần lấy phần tử đầu tiên ra khỏi Danh sách và gọi get() vào nó, nó sẽ chặn trong khi kết quả của những người khác có thể trở nên có sẵn và chương trình sẽ không biết. Đó là lý do tại sao tôi cần phải tiếp tục lặp lại với thời gian chờ.
cảm ơn trước
tôi khuyên bạn nên xem xét các tiện ích ListenableFuture trong thư viện Ổi: https://code.google.com/p/guava-libraries/wiki/ListenableFutureExplained – Enwired