Apache HttpClient 4.5 的 HttpClient 对象可以作为单例复用,且这是官方推荐的最佳实践。以下是详细说明及注意事项:
1. 为什么推荐单例模式?
- 连接池复用:
HttpClient内部通过PoolingHttpClientConnectionManager管理连接池,复用 TCP 连接可显著减少资源消耗(如避免重复 TCP 握手)。 - 线程安全:
HttpClient的实现是线程安全的,多线程共享同一实例不会导致竞争或数据错乱。 - 性能优化:单例模式避免频繁创建和销毁对象的开销,适合高并发场景。
2. 正确配置单例 HttpClient
(1) 初始化连接池管理器
PoolingHttpClientConnectionManager connectionManager =
new PoolingHttpClientConnectionManager();
// 设置最大总连接数
connectionManager.setMaxTotal(200);
// 设置每个路由(目标主机+端口)的最大并发连接数
connectionManager.setDefaultMaxPerRoute(50);
// 空闲连接验证间隔(防止使用已失效的连接)
connectionManager.setValidateAfterInactivity(5000

最低0.47元/天 解锁文章
3022

被折叠的 条评论
为什么被折叠?



