Java, асинхронная отправка множества get-запросов

226
06 июля 2017, 00:59

Здравствуйте! Возник такой вопрос. Как правильно отправлять N (N > 100) get-запроcов в секунду на указанный url?

Для решения этой задачи я испольховал ExecutorService i CountDownLatch.

CountDownLatch latch = new CountDownLatch(DEFAULT_LATCH_COUNT);
    for (int i = 0; i < requestNumber; i++) {
        executor.submit(RequestFactory.getInstance().createRequester(latch, url));
    }
latch.countDown();

Но проблема в том что для каждого нового запроса я создаю новый поток(как отправить асинхронно по другому не знаю) и делаю await(), а после того как создано достаточное кол-во потоков - продолжаю их работу одновременно. По скольку время ожидания ответа сервера может быть разным, количество потоков растет и в конце концов может привести к окончанию памяти.

Подскажите есть ли варианты сделать это другим способом ?

READ ALSO
Глобальная обработка Нажатий мыши Java

Глобальная обработка Нажатий мыши Java

Хотелось бы обработать нажатие мыши не только в своем приложении, но и глобальноЕсть такой код :

179
Добавление поиска SearchView в Activity не содержащую ListView

Добавление поиска SearchView в Activity не содержащую ListView

Вопрос заключается в следующем: я реализовал SearchView в ToolBar, при этом в активности нет элемента ListViewНа ней расположены 10 кнопок с картинками

187
Преобразование String to Int без parseInt

Преобразование String to Int без parseInt

Нужно реализовать метод без использования parseIntПодскажите основной алгоритм как это сделать ?

173
Конфигурация Spring Boot с использованием gradle

Конфигурация Spring Boot с использованием gradle

Есть приложение, написанное на Spring BootДля сборки используется gradle

156