Постановка задачи: Необходимо выбрать не менее трёх открытых, периодически обновляемых REST API, например, открытые источники новостей, статей, погодных наблюдений или API различных сервисов, таких как соц. сети, онлайн кинотеатры и т. д. (списки открытых API - раз, два, три) Следующим шагом нужно разработать приложение, которое в нескольких потоках опрашивает API источников данных и сохраняет новые записи в файл формата CSV или JSON (по выбору пользователя) Требования:
-
В качестве аргумента при запуске приложения передаётся:
- Количество допустимых одновременно активных потоков n;
- Временной таймаут t в секундах, задающий перерыв между итерациями опроса сервиса;
- Список названий сервисов, которые будут опрашиваться;
- Формат файла для сохранения результатов
-
На каждый источник данных создаётся отдельный поток, в котором производится опрос API, а именно выполнение HTTP запроса к выбранным конечным точкам, возвращающим данные. Одновременно могут работать не более n таких потоков. Если число опрашиваемых сервисов больше n, то потоки для оставшихся сервисов ждут очереди, пока один из один из других потоков не завершит обновление данных. При этом поток опроса запускается по новой через заданное время t после завершения и также ожидает очереди, если число активных потоков опроса равно n.
-
Все потоки пишут данные в один и тот же файл
-
Для создания потоков использовать библиотеку util.concurrent
-
Код должен быть покрыт unit-тестам не менее чем на 70%.
-
Для подключения сторонних библиотек и фреймворков при разработке использовать сборщик проектов Maven или Gradle.