Timeouts are not provided by the @Async
annotation, since the timeout should be decided by the caller of the function, not the function itself.
I'm assuming you're referring to the timeout on an @Async
-annotated method which returns a result. Such methods should return an instance of Future
, and the get()
method on Future
is used to specify the timeout.
e.g.
@Async
public Future<String> doSomething() {
return new AsyncResult<String>("test");
}
and then
Future<String> futureResult = obj.doSomething(); // spring makes this an async call
String result = futureResult.get(1, TimeUnit.SECOND);
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…