Ich versuche, eine Methode mehrmals alle 60 Sekunden aufzurufen, bis eine Erfolg-Antwort von der Methode tatsächlich einen Rest Endpunkt auf einem anderen Dienst aufruft. Ab jetzt verwende ich tun while-Schleife undJava Mit CountDownLatch eine Methode bis eine Erfolgsantwort abfragen
Thread.sleep(60000);
mit der Haupt-Thread warten Sie 60 Sekunden zu machen, die ich fühle mich aufgrund Concurrency Probleme nicht der ideale Weg ist.
stieß ich auf die CountDownLatch Methode
CountDownLatch latch = new CountDownLatch(1);
boolean processingCompleteWithin60Second = latch.await(60, TimeUnit.SECONDS);
@Override
public void run(){
String processStat = null;
try {
status = getStat(processStatId);
if("SUCCEEDED".equals(processStat))
{
latch.countDown();
}
} catch (Exception e) {
e.printStackTrace();
}
}
ich die run-Methode in einer anderen Klasse haben, die runnable implementiert. Nicht in der Lage, dies zum Funktionieren zu bringen. Irgendeine Idee was falsch ist?
Warum rufst du zweimal an? Was meinst du damit, dass das nicht funktioniert? – bmargulies
Sorry für den Fehler. Ich habe es korrigiert. Das Problem hier ist, dass ich die Methode von der Runnable-Klasse aufrufen und nicht in der Lage bin herauszufinden, wie die Erfolgs-/Fehlerantwort von der Runnable-Klasse an den Hauptthread übergeben wird. – Upen