Ich plante eine wiederkehrende Aufgabe. Jetzt möchte ich, dass der Haupt-Thread auf ScheduledExecutorService
wartet, um seine erste Ausführung abzuschließen. Wie kann ich das erreichen?Wie kann ich warten, bis die erste Iteration einer geplanten Aufgabe abgeschlossen ist?
0
A
Antwort
2
Verwenden Sie eine CountDownLatch
, um zwischen Threads zu koordinieren.
final CountDownLatch latch = new CountDownLatch(1);
scheduledExecutorService.scheduleAtFixedRate(new Runnable() {
@Override
public void run() {
loadInfo();
latch.countDown();
}
}, 1, 5, TimeUnit.MINUTES);
latch.await();
Ein besserer Ansatz könnte für sein die geplante Aufgabe einen Rückruf auszuführen, nachdem die Informationen geladen werden Beobachter zu aktualisieren, die auf diesen Informationen abhängen.
Überprüfen Sie meine Antwort in: http://stackoverflow.com/questions/35075886/how-to-wait-for-a-thread-that-spawns-its-own-thread –
Haben Sie diese 'geplanteExecutorService gesehen. awayTermination (Timeout, Einheit) '? – mob41