Wie implementieren Sie ein effizientes timeout in java

Gibt es n Objekt, das einige Aktionen. Nach der Durchführung einer Aktion, ein Zeitstempel aktualisiert werden. Jetzt will ich zur Implementierung eines timeout-thread, der überprüft, ob ein Zeitstempel ist älter als zum Beispiel 60 Sekunden.

Meine erste Lösung war, das zu tun, mit einem Gewinde (while-Schleife + sleep), die ist im Besitz einer Liste mit allen Objekten, einschließlich den letzten Zeitstempel. Nun habe ich das problem, dass es eine worst-case-Szenario, in dem der thread muss 59 Sekunden plus Zeit schlafen, um zu entscheiden, für ein timeout.

Ich bin auf der Suche nach einer Lösung, wie eine Timer-wo es möglich ist, aktualisieren Sie die delay-Zeit.

Irgendwelche Ideen?

Ich finde eine harte Zeit zu verstehen, Ihre Logik. Würden Sie bitte zeigen Sie ein Beispiel-code für das, was Sie sind versuchen zu tun ?
Etwas lässt mich denken, dass Sie überwachen möchten einige threads, die für eine "Arbeit abgeschlossen" - Ereignis. Könnten Sie CountDownLatch für diesen Zweck.
Was passiert, wenn ein Objekt abgeschlossen in der Zeit? Und was passiert, wenn Sie es nicht tun? Tun Sie es Ihnen ermöglichen, weiter? oder müssen Sie stoppen? Es sind mehrere Optionen. Könntest du dein Ziel auf die Frage? und man kann die beste Lösung für dieses problem.
eine weitere Klarstellung: Wenn Sie sagen, "Es gibt n Objekt, das einige Aktionen..." ich denke mal du meinst "n threads ..." ?

InformationsquelleAutor stormsam | 2012-07-24

Schreibe einen Kommentar