Tôi đang tìm hướng dẫn cho một vấn đề một cách logic tương đương như sau:Làm thế nào để thực hiện đánh giá ngắn mạch trong Java trên hai luồng song song trả về giá trị boolean?
public boolean parallelOR() {
ExecutorService executor = Executors.newFixedThreadPool(2);
Future<Boolean> taskA = executor.submit(new SlowTaskA());
Future<Boolean> taskB = executor.submit(new SlowTaskB());
return taskA.get() || taskB.get(); // This is not what I want
// Exception handling omitted for clarity
}
Việc xây dựng ở trên cho kết quả chính xác nhưng luôn luôn chờ đợi để hoàn thành taskA ngay cả khi kết quả đã được biết đến từ taskB có hoàn thành.
Có cấu trúc nào tốt hơn sẽ cho phép giá trị trả về nếu một trong hai chủ đề trả về true mà không cần đợi chuỗi thứ hai hoàn thành?
(Nền tảng liên quan là Android, nếu điều đó ảnh hưởng đến kết quả).
Bạn có thể sửa đổi các nhiệm vụ? – Collin
Vì vậy, bạn không muốn chờ đợi cho các chủ đề A và B để hoàn thành trước khi nhận được valus ??? và bạn muốn nó khi A được thực hiện bạn sẽ nhận được giá trị và ngược lại? –
Ý tưởng có vẻ là nếu taskB kết thúc trước, và là đúng, thì bạn có thể đoản mạch và không đợi taskA kết thúc. – Collin