2016-07-19 7 views
0

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

Überprüfen Sie meine Antwort in: http://stackoverflow.com/questions/35075886/how-to-wait-for-a-thread-that-spawns-its-own-thread –

+0

Haben Sie diese 'geplanteExecutorService gesehen. awayTermination (Timeout, Einheit) '? – mob41

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.

Verwandte Themen