限制多个执行程序中的总线程

时间:2018-10-11 17:30:59

标签: java java-threads executor

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

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

是否可以使用Java创建“大线程池”(具有20个线程)以将所有进程的传输线程总数限制为最多20个?

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

1 个答案:

答案 0 :(得分:2)

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