有一组以Callable
或Future
个对象给出的任务。对于所有任务,必须同时执行这些任务和一次超时,因此如果超时为3秒,则在3秒内所有任务都应完成或TimeoutException
应该注册。
在JDK中,给定的操作以ExecutorService#invokeAll(Collection<? extends Callable<T>>, long, TimeUnit)
存在,但由于Spring框架将此接口隐藏在AsyncTaskExecutor
之后,因此无法从中受益。代码的复制粘贴不是一种选择。
最好的出路是什么?我建议在Spring中的某个实用程序类中将给定的功能实现为辅助方法。
答案 0 :(得分:1)
没有在spring core中找到有用的东西。恕我直言,最好的方法是使用CountDownLatch。将其传递给Callable并在使用countDown()
主要&#39;完成工作后致电await(3, TimeUnit.SECONDS)
线。请注意,await(long timeout, TimeUnit unit)
返回布尔值而不抛出任何TimeoutException
。