Wie setzt man einen Timer in Java?
Wie man einen Timer, sagen wir für 2 Minuten, um zu versuchen, eine Verbindung zu einer Datenbank dann werfen Ausnahme, wenn es ein Problem in Verbindung ist?
140
3
Also der erste Teil der Antwort ist, wie zu tun, was das Thema fragt, wie dies war, wie ich es zunächst interpretiert und ein paar Leute schien zu finden, hilfreich. Die Frage wurde seitdem geklärt und ich habe die Antwort erweitert, um darauf einzugehen.
Einstellen eines Timers
Zuerst müssen Sie einen Timer erstellen (ich verwende hier die Version
java.util
):..
Um die Aufgabe einmal auszuführen, würden Sie Folgendes tun:
Um die Aufgabe nach der Dauer zu wiederholen, würden Sie Folgendes tun:
Timeout für eine Aufgabe
Um genau das zu tun, wonach die geklärte Frage fragt, nämlich zu versuchen, eine Aufgabe für eine bestimmte Zeitspanne auszuführen, könnten Sie Folgendes tun:
Dies wird normal mit Ausnahmen ausgeführt, wenn die Aufgabe innerhalb von 2 Minuten abgeschlossen wird. Läuft sie länger, wird die TimeoutException geworfen.
Ein Problem ist, dass, obwohl Sie nach den zwei Minuten eine TimeoutException erhalten, die Aufgabe tatsächlich weiterläuft, obwohl vermutlich eine Datenbank- oder Netzwerkverbindung irgendwann eine Zeitüberschreitung verursacht und eine Ausnahme im Thread auslöst. Aber seien Sie sich bewusst, dass bis dahin Ressourcen verbraucht werden können.
Verwenden Sie diese
Ok, ich glaube, ich verstehe Ihr Problem jetzt. Du kannst einen Future verwenden, der versucht, etwas zu tun und dann nach einer Weile einen Timeout macht, wenn nichts passiert ist.
Z.B.: