2010-09-24 8 views

Répondre

10

Les délais d'expiration ne sont pas fournis par l'annotation @Async, car le délai d'attente doit être décidé par l'appelant de la fonction et non par la fonction elle-même.

Je suppose que vous faites référence au délai d'expiration d'une méthode @Async qui retourne un résultat. Such methods should return an instance of Future et la méthode get() sur Future est utilisée pour spécifier le délai d'expiration.

par exemple.

@Async 
public Future<String> doSomething() { 
    return new AsyncResult<String>("test"); 
} 

puis

Future<String> futureResult = obj.doSomething(); // spring makes this an async call 
String result = futureResult.get(1, TimeUnit.SECOND); 
+3

mais cette méthode ne résiliez pas le thread de travail. Avez-vous une idée pour annuler ce sujet? – pablobaldez

+0

@pablobaldez appel 'future.cancel (true);' si vous obtenez le timeoutException – sidgate