json = HttpUtil.doGet(url);来调用第三方接口
HttpUtil.doGet("www.baidu.com")
}
//这里没有用异步执行,单线程执行
@...…
因为流没有关闭,这个HttpClient连接池的连接一直没有回收回去,后面的线程又一直在调用这个doGet方法;
但是又获取不到连接,所以就一直阻塞在哪里,直到连接超时HttpClient内部三个超时时间的区别...然后myAsync 这个线程池的线程也是有限的, Schedule每秒都在执行,很快线程不够用了,然后就阻塞了testDoGet这个定时任务了;
为了确认是 流未关闭的问题 我们可以看看服务器的TCP...可以看到有很多的80连接端口处于CLOSE_WAIT状态的; CLOSE_WAIT状态的原因与解决方法
问题的原因找到了,那么解决的方法就很简单了,把HttpClient的连接的流关闭掉就行了
HttpEntity...response.getEntity();
httpStr = EntityUtils.toString(entity, "UTF-8");
EntityUtils.toString方法里面有关闭流的