我查看了文档,但无法找到是否有方法为使用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