一、连接池的作用
HttpClients连接池可以方便HTTP请求复用底层TCP连接,前提是同一Route下的请求,并且服务端支持Keep-Alive,当然现在服务器Keep-Alive基本上是默认配置了,如果服务端是自己实现的则需要手动设置一下。
在使用过程中发现连接池并不是万能解决方案,各别情况下效果没有直接使用URL构造请求来的快。
二、创建连接池
直接使用了HttpClient工具包,先在pom.xml里添加引用:
1 |
|
创建Util类MyUtil.java:
1 | ...... |
三、使用示例
使用示例(一定要在并发场景下使用,否则看不到效果):
1 | public static void main(String args[]){ |
四、使用现在的带连接池方法
不想自己实现的话可以使用现成的带连接池的工具包,比如:fluent-hc
添加pom.xml引用:
1 | <dependency> |
添加如下方法:
1 | public static String get(String url, String json) { |
使用的话参照上边的示例改一下请求方法就行了,比自己构建简单的多。
五、一些问题
关于连接池大小的问题,对同一个Route设置池大小100以下是有效果的,多于100 后,最多只会创建100个线程使用.
1 | //默认路由最高50并发(本机8核Cpu,设置50或100没什么区别,设置大于100时池里最多只有100个线程) |
本文作者:
ixx
本文链接: http://blog.jisuye.com/2019/06/05/httpclientspool/
版权声明: 本作品采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议 进行许可。转载请注明出处!
本文链接: http://blog.jisuye.com/2019/06/05/httpclientspool/
版权声明: 本作品采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议 进行许可。转载请注明出处!