我查看了文檔,但無法找到是否有方法爲使用Spring 3.0使用@Async註釋的方法時產生的異步操作指定超時。爲使用Spring 3.0的方法使用@Async時提供超時值
有沒有辦法做到這一點?我認爲這是非常重要的,每當觸發一個異步計算。
我查看了文檔,但無法找到是否有方法爲使用Spring 3.0使用@Async註釋的方法時產生的異步操作指定超時。爲使用Spring 3.0的方法使用@Async時提供超時值
有沒有辦法做到這一點?我認爲這是非常重要的,每當觸發一個異步計算。
由於超時值應該由函數的調用者決定,而不是函數本身,所以@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);
在@Async source code是沒有配置選項。
但這種方法不取消的工作線程。你有什麼想法取消這個線程? – pablobaldez 2015-10-02 19:05:37
@pablobaldez調用'future.cancel(true);'如果得到timeoutException – sidgate 2017-10-07 11:57:30