Tôi đang sử dụng Executors.newCachedThreadPool()
và invokeAll
với Danh sách Callable
s để thực hiện xử lý đa luồng chạy dài. Chủ đề chính của tôi bị chặn cho đến khi tất cả các chủ đề đã kết thúc và tôi có thể xử lý tương lai được trả lại bằng invokeAll
. Tuy nhiên, tôi muốn invokeAll
trả lại ngay lập tức nếu một trong số Callable
s ném một ngoại lệ và chấm dứt các chủ đề khác.Quay lại chủ đề chính ngay sau khi một chủ đề con ném một ngoại lệ
Sử dụng execute
thay vì invokeAll
sẽ chặn trên số future.get()
đầu tiên không cần phải là thao tác ném thực thi.
Sử dụng chờ đợi bận rộn để lặp qua tất cả các tương lai và kiểm tra isDone()
dường như cũng không phải là cách tốt nhất.
bạn đã thử tắt dịch vụ thi hành và có làm gián đoạn các tác vụ khác không? nếu những nhiệm vụ khác không chờ đợi/đọc họ vẫn có thể kiểm tra cờ gián đoạn thread mỗi bây giờ và sau đó – radai