Моя структура приложения выглядит следующим образом:
Контроллер, который вызывает класс обслуживания, который, в свою очередь, вызывает класс репозитория.
Хранилище (objectRepo) возвращает список объектов.
Класс обслуживания анализирует этот список объектов, которые он получает из репозитория, и преобразует его в класс apiResponseWrapper.
Контроллер передает этот apiResponseWrapper пользователю, не меняя его.
В моем классе обслуживания у меня есть код, который эффективно переводится в приведенный ниже пример кода:
List<Object> objectList = objectRepo.getList(paramMap);
List<Entity> entityList = new ArrayList<>();
objectList.parallelStream().forEach(object->{
//code to transform object
entityList.add(transformedObject);
});
return entityList;
Когда используется параллельный поток, как описано выше, размер ответа моего API изменяется при последовательных вызовах с одинаковыми параметрами, и при дальнейшей проверке некоторые объекты отсутствуют в ответах на несколько таких вызовов. При удалении parallelStream размер ответа остается тем же, и все ожидаемые объекты находятся в результате.
Я хотел бы знать, существует ли какой-либо конкретный способ / какой-либо набор руководств, которые бы помогли мне использовать параллельный поток без потери данных.