У меня есть четыре службы.
One will give hotels which is matching to the query.
One will give City which is matching to the query.
One will give Airports which is matching to the query.
One will give Metro stations which is matching to the query.
Для каждого HTTP-запроса я получу эти четыре службы и объединю ответ четырех служб и вернусь.
Итак, мой пример кодаэто как
for(EntityGroups entityGroups: EntityGroups.values()){
Callable<Response> callable = new XCallable(entityTypetoFetch, searchQuery);
Future<List<Entity>> listFuture = executor.submit(callable);
entityTypeAndFutureMap.put(entityTypetoFetch, listFuture);
}
После этого я получаю весь ответ для цикла
trainStationList = entityTypeAndFutureMap.get(EntityGroups.TRAIN_STATION).get();
landmarkEntities = entityTypeAndFutureMap.get(EntityGroups.LANDMARK_GROUP).get();
cityEntities = entityTypeAndFutureMap.get(EntityGroups.CITY_GROUP).get();
hotelEntities = entityTypeAndFutureMap.get(EntityGroups.HOTEL_GROUP).get();
Поскольку я хочу, чтобы весь список слился и сделал окончательный ответ.Я делаю блокирующий звонок.Я просто хочу объединить эти списки и вернуться.Если я использую здесь Completetablefuture, поможет ли это?
На данный момент загрузка моего процессора очень высока, когда я увеличиваю TPS.увеличение числа машин помогает, но все же есть ли оптимизированный способ решить эту проблему?