1

我有一个使用 apache 的 HttpClient 来获取网站的应用程序。它有 2 个线程 - UI 线程(用户可以在其中命令下载子页面)和其他线程通过使用 HttpPost 下载每隔 x 秒刷新一次主页。似乎存在一些同步问题(查询开始立即以套接字错误结束),当重新加载用户开始下载另一个页面时(我对两个查询使用相同的 DefaultHttpClient)。重要的是该页面需要 cookie(用户有其会话)。我的问题是:我应该使用一个 HttpClient 和查询队列不让它们同时发生吗?或者也许每个线程都应该有自己的 HttpClient 并且它们应该有共同的上下文?还是有其他方法可以消除此错误?

我还想问你是否知道比 JSoup 更快的 HTML 解析器。我同意,它相当快,但也许有更好的东西?

4

2 回答 2

4

您可以HttpClient thread safe通过指定线程安全的客户端管理器来进行。(Threadsafe从某种意义上说,两个或多个线程可以与其交互而不会出现错误消息)

http://foo.jasonhudgins.com/2009/08/http-connection-reuse-in-android.html

于 2013-06-24T08:26:20.180 回答
0

每个线程都应该有 HTTPClient。如果您正在执行任何常见任务(可能是危险的)。为了使其线程安全,您应该将同步块放在方法级别或您有共同任务要做的地方。

建议:在使用线程时,尽可能将任务分开。如果您有一些共同任务,请使用同步块

于 2013-06-24T08:21:04.247 回答