2010-09-24 31 views

回答

10

由於超時值應該由函數的調用者決定,而不是函數本身,所以@Async註釋不提供超時。

我假設你指的是@Async-annotated方法返回結果的超時。 Such methods should return an instance of Future,並使用Future上的get()方法來指定超時。

例如

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

然後

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

但這種方法不取消的工作線程。你有什麼想法取消這個線程? – pablobaldez 2015-10-02 19:05:37

+0

@pablobaldez調用'future.cancel(true);'如果得到timeoutException – sidgate 2017-10-07 11:57:30

相關問題