szukam wskazówek dla problemu logicznie równoważna następującej:Jak przeprowadzić ocenę zwarcia w Javie na dwóch równoległych wątkach zwracających wartości logiczne?
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
}
Powyższa konstrukcja daje poprawny wynik ale zawsze czeka na Taska aby zakończyć nawet jeśli wynik jest już znany od taskB ma zakończono.
Czy istnieje lepsza konstrukcja, która pozwoli na zwrócenie wartości , jeśli jeden z wątków zwróci wartość true bez czekania na zakończenie drugiego wątku?
(Zaangażowaną platformę jest Android, jeśli ma to wpływ na wynik).
można zmodyfikować zadania? – Collin
Więc nie chcesz czekać na wątki A i B, aby ukończyć przed otrzymaniem valus ??? i chcesz, kiedy A zostanie zrobione, dostaniesz wartość i na odwrót? –
Wygląda na to, że jeśli taskB zakończy się jako pierwszy i będzie prawdą, to możesz wykonać zwarcie i nie czekać na zakończenie zadania A. – Collin