我想迭代一个元素列表并异步地(以并行方式)对它们执行操作.
这是我的代码:
@Autowired
ElemManager elemManager;
...
List elems = new ArrayList<>();
for ( Elem elem : elems ) {
System.out.println(elemManager.doSomething(elem).get());
}
其中ElemManager是:
public class ElemManager {
@Async
public Future doSomething( Elem elem ) {
// do something
return "done";
}
我还在spring上下文中创建了一个线程池并启用了异步执行,因此:
@Configuration
@EnableAsync
public class TaskConfiguration implements AsyncConfigurer {
@Override
public Executor getAsyncExecutor() {
final ThreadPoolTaskExecutor threadPoolTaskExecutor = new ThreadPoolTaskExecutor();
threadPoolTaskExecutor.setMaxPoolSize( 5 );
threadPoolTaskExecutor.setAwaitTerminationSeconds( 60 );
threadPoolTaskExecutor.initialize();
return threadPoolTaskExecutor;
}
@Override
public AsyncUncaughtExceptionHandler getAsyncUncaughtExceptionHandler() {
return new CustomAsyncExceptionHandler();
}
}
我错过了什么吗?它是通过Spring异步执行支持并行执行方法的正确方法吗?