Die Guava-Bibliothek hat eine sehr schöne TimeLimiter
, mit dem Sie dies für jede Methode tun können, die von einer Schnittstelle definiert wird. Es kann einen Proxy für Ihr Objekt generieren, das ein "eingebautes" Timeout hat.
Wie von @MarcoS beantwortet
Ich habe festgestellt, dass kein Timeout ausgelöst wird, wenn die Methode etwas sperrt und die CPU-Zeit nicht an den Timer abgibt. Dann kann der Timer keinen neuen Thread starten. Also ändere ich ein bisschen, indem ich Thread sofort starte und innerhalb Thread tanze.
%Vor% Sie können AOP und eine @Timeable
Annotation von verwenden jcabi-aspects (Ich bin ein Entwickler):
Wenn das Zeitlimit erreicht ist, wird Ihr Thread interrupted()
flag auf true
setzen und es ist Ihre Aufgabe, diese Situation korrekt zu behandeln und die Ausführung zu stoppen.
Überprüfen Sie auch diesen Blogbeitrag: Ссылка
Tags und Links java