Java asynchroner Methodenaufruf
Habe ich bereits ein thread zu tun hat, folgende arbeiten:
public class DetectionHandler extends TimerTask {
@Override
public void run() {
bluetoothAddresses = BluetoothModule.scanAddresses();
wiFiAddresses = WiFiModule.scanAddresses();
...//when scanning is finished, continue work
}
Möchte ich, dass das Scannen parallel sein. Also gehe ich davon aus, dass ich noch zu nennen, dass zwei Methoden asynchron. Und wenn das Scannen abgeschlossen ist, dann kann ich weiter arbeiten in DetectionHandler Klasse.
Habe ich versucht, die Art und Weise, die BluetoothModule und WiFiModule implementiert Runnable, hatte aber kein Glück. Tnx
InformationsquelleAutor vale4674 | 2010-10-23
Du musst angemeldet sein, um einen Kommentar abzugeben.
Mit ExecutorService schreiben Sie etwas wie dieses:
InformationsquelleAutor Eugene Kuleshov
Bekommen ein ExecutorService aus Vollzieher und geben Sie es ein FutureTask.
Können Sie dann warten, bis die Ergebnisse durch den Aufruf der Sperrung get() auf das zurückgegebene Zukunft. Die scans laufen parallel, sondern Ihre run-Methode (siehe hier) noch warten, bis die scans abgeschlossen sein.
Etwas wie:
Seien Sie vorsichtig, wenn, Holen Sie sich zurück was auch immer rufen Sie zurück. Ausnahmen sind verpackt in einer ExecutionException.
Wenn Sie sich entscheiden, zu spielen, um mit threads und dem Datenaustausch beginnen zwischen threads, ich heartilly empfehlen javaconcurrencyinpractice.com (das Buch). Die Verwendung von threads kann seltsame Ergebnisse, wenn Sie nicht vorsichtig sind. Kein problem, in diesem Fall natürlich.
InformationsquelleAutor extraneon