Es gibt ein externes Programm, das eine XML-Datei erstellt, aber es kann eine Weile dauern, zu erstellen. Ich brauche mein Java-Programm, um zu warten, bis die Datei existiert, bevor ich fortfahre.Wie kann ich meine Methode warten, bis eine Datei existiert, bevor Sie fortfahren
Ich habe ein wenig über synchronisierte Blöcke zu lesen, und ich las, dass ich etwas tun kann:
synchronized(this) {
while (!file.exists) { this.wait(); }
}
Um ehrlich zu sein, ich weiß wirklich nicht viel wissen über synchronisierte Aufgaben so ich Ich frage mich, ob ich auf dem richtigen Weg bin oder ob ich weit weg bin.
Zeitüberschreitung warten (langes Timeout); damit nach der gleichen Zeit Faden aufwachen sollte. – Prashant
Nein. Das ist ganz und gar nicht wie das funktioniert, vergessen Sie "synchronisiert". Sie können entweder 1) auf das Beenden des Programms warten oder etwas aus dem Programm in stdout schreiben, wenn das Programm die Datei schreibt; oder 2) verwenden Sie einen ['WatchService'] (http://stackoverflow.com/q/16251273/2071828), um Verzeichnisänderungen zu verfolgen. –
Erstens bezieht sich 'synchronized' auf Multithread-Programme. Zweitens läuft das externe Programm unabhängig von Ihrem Java-Programm, oder Ihr Java-Programm startet dieses externe Programm? –