Я использую завершаемое будущее, которое будет возвращено из потока asyn c в приложении Springboot. Моя реализация ниже. Насколько я понимаю, новый поток должен быть запущен для каждого элемента в списке и должен обрабатываться параллельно. Я понимаю, что .get заблокирует выполнение, но, поскольку он работает параллельно, я не вижу каких-либо улучшений в производительности. Любые предложения ниже, пожалуйста, для улучшения производительности?
ServiceA. java
@Autowired
ServiceB serviceb;
public List<String> getNames(List<Item> items) {
List<CompletableFuture<String>> list = new ArrayList<>();
List<String> returnList = new ArrayList<>();
for( Item item: items) {
CompletableFuture<String> getItemName = serviceb.doProcess(item);
list.add(getItemName):
}
for( CompletableFuture name : list) {
returnList.add(name.get());
}
return returnList;
}
ServiceB. java
Class ServiceB {
@Async
Public CompletableFuture<String> doProcess(Item item)
{
//do process
}