Ограничение общего количества потоков в нескольких исполнителей - PullRequest
0 голосов
/ 11 октября 2018

У меня есть шесть процессов, которые отправляют данные на внешние серверы.Каждый процесс запускает несколько потоков «Transfer» для повышения производительности и паралеллизма (задержки, большие файлы и т. Д.).У меня есть один исполнитель на процесс, максимум 5 потоков в каждом.

Теперь, поскольку внешний сервер поддерживает только 20 потоков, и мои процессы пытаются запустить всего 30 потоков (6 процессов по 5 потоков в каждом), некоторые потоки завершаются сбоем,Я понял.

Есть ли способ создать «большой пул потоков» (с 20 потоками) в Java, чтобы ограничить общее количество потоков передачи максимум 20 для всех процессов?

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

1 Ответ

0 голосов
/ 11 октября 2018

Вы можете использовать одного исполнителя и реализовать шаблон переборка для своих процессов.У Hystrix и Resilience4j есть готовые реализации, например.

...