限制多个执行器中的总线程数

Limiting Total Threads in Multiple Executors

我有六个进程将数据发送到外部服务器。每个进程 运行 多个 "Transfer" 线程以提高性能和并行性(延迟、大文件等)。我每个进程有一个执行程序,每个进程最多有 5 个线程。

现在,由于外部服务器仅支持 20 个线程,而我的进程尝试 运行 总共 30 个线程(6 个进程 x 每个 5 个线程),一些线程崩溃了。我明白了。

有什么方法可以在 Java 中创建一个 "big thread pool"(有 20 个线程)来将所有进程的总传输线程限制为最多 20 个?

或者,我正在考虑为所有进程创建一个 单个 执行程序,但这样一个进程可能会占用所有线程,而使其他线程挨饿。

您可以使用单个执行程序并为您的进程实施 模式。 例如,Hystrix 和 Resilience4j 有现成的实现。