Я разработал консольное приложение Java, которое выполняет следующие действия:
Извлечение сведений о продукте, таких как идентификатор продукта, имя, стоимость и т. Д., Из базы данных Oracle и размещение их на карте (скажем, в dbMap) - один продукт может иметь несколько записей, поскольку имеются под-продукты.
Получить аналогичные сведения о продукте с сервера REST и сохранить их на карте (скажем, restMap)
Поскольку БД имеет правильные данные, сравнивает две карты - dbMap и restMap и определяет, что следует добавить, заменить и удалить с сервера REST.
Для этой цели я создаю один запрос исправления JSON для каждого продукта - с операциями добавления, замены, удаления (около ста или около того для каждого продукта) и отправляю его на сервер REST.
Тем не менее, я вижу, что для выполнения всех этих операций требуется несколько минут, и все эти операции происходят линейно - вызов базы данных, вызов остального сервера, сравнение и, наконец, сервер Patch to REST.
Я предполагаю, что вместо того, чтобы обрабатывать все данные в одном потоке, если я смогу получить список продуктов и перейти по каждому продукту, с каждым продуктом в отдельном потоке и запустить эти потоки параллельно, это может быть быстрее .
Итак, каждый поток может делать следующее: получать сведения о продукте одного продукта из базы данных, а также с сервера REST, сравнивать их оба, генерировать запрос исправления (с операциями добавления / удаления / замены) для этого продукта и отправлять его по адресу REST сервер.
Не могли бы вы подсказать, как я могу реализовать этот тип архитектуры потоков в Java? (Кажется, есть несколько способов, таких как пулы, AKKA и т. Д., И я в замешательстве.)