运行 Web 服务请求的线程池的合理线程数

2022-09-02 21:40:59

在 Java 中创建 FixedThreadPool Executor 对象时,您需要传递一个参数,描述执行程序可以并发执行的线程数。我正在构建一个服务类,其职责是处理大量电话号码。对于每个电话号码,我需要执行Web服务(这是我的瓶颈),然后将响应保存在哈希图中。

为了使这个瓶颈对我的服务性能的危害更小,我决定创建 Worker 类来获取未处理的元素并处理它们。Worker 类实现 Runnable 接口,我使用 Executor 运行 Workers。

可以在同一时间运行的工作线程数取决于执行器 FixedThreadPool 的大小。线程池的安全大小是多少?当我使用一些大数字作为参数创建固定热池时会发生什么?


答案 1

可以考虑的事情是看看

Runtime.getRuntime().availableProcessors()

这为系统有意义的线程数提供了一些指导。


答案 2

如果每个工作线程都需要进行 Web 服务调用,则池中的线程数应受到 Web 服务可以处理的同时请求数的强烈影响。任何更多的线程都只会使Web服务不堪重负。


推荐