Legen Sie das Laufzeitlimit für eine Methode in Java fest

8

Ich habe eine Methode, die einen String zurückgibt. Ist es möglich, dass nach einer gewissen Zeit der Schwellenwert überschritten wird, um eine bestimmte Zeichenfolge zurückzugeben?

    
London 09.03.2011, 08:45
quelle

4 Antworten

14

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.

    
skaffman 09.03.2011, 08:47
quelle
10

Ich habe in der Vergangenheit etwas Ähnliches gemacht, als ich einen externen Prozess mit Runtime.getRuntime().exec(command) erstellt habe. Ich denke, du könntest so etwas in deiner Methode machen:

%Vor%

und hier ist InterruptTimerTask

%Vor%     
MarcoS 09.03.2011 08:57
quelle
1

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%     
Hlex 29.05.2012 13:44
quelle
1

Sie können AOP und eine @Timeable Annotation von verwenden jcabi-aspects (Ich bin ein Entwickler):

%Vor%

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: Ссылка

    
yegor256 05.04.2013 17:58
quelle

Tags und Links