Эффективный способ использовать пул соединений с несколькими параллельными потоками - PullRequest
1 голос
/ 04 июня 2019

Я использую три потока, которые должны вызывать HTTP-запросы.Все звонки являются независимыми.Итак, я использую параллельные потоки и собираю результаты из HTTP-ответа.

В настоящее время я использую три отдельных параллельных потока для этих операций.

Map<String, ClassA> list1 = listOfClassX.stream().parallel()
        .map(item -> {
            ClassA instanceA = httpGetCall(item.id);
            return instanceA;
        })
        .collect(Collectors.toConcurrentMap(item -> item.id, item -> item);

Map<String, ClassB> list1 = listOfClassY.stream().parallel()
        .map(item -> {
            ClassB instanceB = httpGetCall(item.id);
            return instanceB;
        })
        .collect(Collectors.toConcurrentMap(item -> item.id, item -> item);

Map<String, ClassC> list1 = listOfClassZ.stream().parallel()
        .map(item -> {
            ClassC instanceC = httpGetCall(item.id);
            return instanceC;
        })
        .collect(Collectors.toConcurrentMap(item -> item.id, item -> item);

Он запускает три параллельных потока отдельно один за другимдругой, хотя каждый звонок независим.

Поможет ли в этом случае общий пул соединений с вилками оптимизировать использование пула потоков здесь?

Есть ли какой-либо другой способ дальнейшей оптимизации производительности этого кода?

...