【发布时间】:2012-02-13 05:13:43
【问题描述】:
我在 android 中运行网络服务,在该服务中我指示所有 http 请求运行,并在请求完成时从服务中获取回调。我在ThreadPoolExecutor 中运行请求以限制并发请求的数量。当请求在池中运行时,它们最终会创建一个 HttpGet 或 HttpPost,它们都间接实现了AbortableHttpRequest,它允许取消连接(例如,如果它长时间阻塞)。
如果用户取消请求,我想以某种方式深入线程队列并为该请求调用中止例程。例如,如果一个网站没有响应,而用户选择做其他事情,那么现在我唯一的选择是等待该挂起请求发生标准的 5 分钟 http 超时,然后释放该线程。如果我可以访问有我的请求的线程并调用 abort,那将立即释放一切。
据我所知,一旦我的请求进入线程池,它就会出现,直到它从另一端出来。查询队列只会交还futures,会隐藏runnable。
有没有更好的方法呢?我对 java 和线程相当陌生(我主要使用 perl,它根本不能很好地处理线程)。
【问题讨论】:
标签: java android multithreading http threadpool