ich für ein Problem logisch äquivalent zu dem folgenden für die Führung suchen:Wie führt man in Java eine Kurzschlussauswertung auf zwei parallelen Threads durch, die boolesche Werte zurückgeben?
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
}
Die obige Konstruktion gibt das richtige Ergebnis aber immer wartet Taska sogar abzuschließen, wenn das Ergebnis bereits seit TaskB hat bekannt abgeschlossen.
Gibt es eine bessere Konstruktion, die es ermöglicht, dass ein Wert zurückgegeben wird, wenn einer der beiden Threads den Wert true zurückgibt, ohne auf den Abschluss des zweiten Threads zu warten?
(Die betroffene Plattform ist Android, wenn das das Ergebnis beeinflusst).
Können Sie die Aufgaben ändern? – Collin
Sie wollen also nicht warten, bis die Threads A und B abgeschlossen sind, bevor Sie den Valus bekommen haben ??? und du willst es, wenn A fertig ist, bekommst du den Wert und umgekehrt? –
Die Idee scheint zu sein, dass wenn taskB zuerst beendet wird und wahr ist, dann kann man kurzschließen und nicht warten, bis TaskA beendet ist. – Collin