Spring核心助手等待所有并发任务

时间:2015-12-23 16:09:01

标签: spring concurrency java.util.concurrent

有一组以CallableFuture个对象给出的任务。对于所有任务,必须同时执行这些任务和一次超时,因此如果超时为3秒,则在3秒内所有任务都应完成或TimeoutException应该注册。

在JDK中,给定的操作以ExecutorService#invokeAll(Collection<? extends Callable<T>>, long, TimeUnit)存在,但由于Spring框架将此接口隐藏在AsyncTaskExecutor之后,因此无法从中受益。代码的复制粘贴不是一种选择。

最好的出路是什么?我建议在Spring中的某个实用程序类中将给定的功能实现为辅助方法。

1 个答案:

答案 0 :(得分:1)

没有在spring core中找到有用的东西。恕我直言,最好的方法是使用CountDownLatch。将其传递给Callable并在使用countDown()主要&#39;完成工作后致电await(3, TimeUnit.SECONDS)线。请注意,await(long timeout, TimeUnit unit)返回布尔值而不抛出任何TimeoutException