Sto cercando una guida per un problema logicamente equivalente alla seguente:Come eseguire la valutazione di cortocircuito in Java su due thread paralleli che restituiscono valori booleani?
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
}
La costruzione di cui sopra dà il risultato corretto ma aspetta sempre Taska per completare anche se il risultato è già noto dal TaskB ha completato.
Esiste una struttura migliore che consenta di restituire un valore se uno dei thread restituisce true senza attendere il completamento del secondo thread?
(La piattaforma interessata è Android, se questo influenza il risultato).
Potete modificare i compiti? – Collin
Quindi non vuoi aspettare i thread A e B per completare prima di ottenere il valus ??? e lo vuoi quando A è fatto, ottieni il valore e viceversa? –
L'idea sembra essere che se l'attivitàB termina per prima, ed è vera, allora si può creare un cortocircuito e non attendere che l'attività A termini. – Collin