易创论坛 - 因你而精彩
  [Search] 搜索   [Recent Topics] 最新主题   [Hottest Topics] 热门主题   [Members]  会员列表   [Groups] 返回首页 
[Moderation Log] 管理日志   [Register] 会员注册 / 
[Login] 登入 
HttpClient解决请求多线程问题  XML
论坛首页 » J2EE技术交流
发表人 内容
eworkday



注册时间: 17/02/2009 09:38:31
文章: 761
离线

/**
* 当同时执行生成去哪儿和酷讯页面缓存时,容易出现错位的问题,估计是多线程问题引起的,
* 最原因是不同的URL请求访问同一个连接造成的。每个请求都将产生对应的新的线程,
* 但URL对象的请求看来是类似打开同一个浏览器页面异步提交多个请求。这就容易出现多个
* 请求都是通过一个底层连接返回响应数据,但这些数据是不同请求返回的。
* 参考HttpURLConneciton说明:
* Each HttpURLConnection instance is used to make a single request
* but the underlying network connection to the HTTP server may be
* transparently shared by other instances. Calling the close() methods
* on the InputStream or OutputStream of an HttpURLConnection
* after a request may free network resources associated with this
* instance but has no effect on any shared persistent connection.
* Calling the disconnect() method may close the underlying socket
* if a persistent connection is otherwise idle at that time.
*/


基于以上原因,不能采用URL解决多线程问题,需寻找已经解决多线程问题的库,其解决方案值得研究。HttpClient目前已经提供多线程解决方案。

HttpClient同时发出多个请求可能引起的多线程问题,可以使用ThreadSafeClientConnManager创建DefaultHttpClient。

ThreadSafeClientConnManager当前版本已经不推荐使用,而推荐使用PoolingClientConnectionManager。

注:到目前PoolingClientConnectionManager测试还未成功,有必要的时候再进行测试。

参考文章:
httpclient4.2.1最新版连接池配置
httpClient多线程请求
HttpClient 多线程

这篇文章被编辑了 5 次. 最近一次更新是在 22/02/2013 18:00:28


易创天成
[MSN]
 
论坛首页 » J2EE技术交流
前往:   
Powered by JForum 2.1.8 © JForum Team. Improved by EWorkday