【问题标题】:Multiple http requests with cancel request带有取消请求的多个 http 请求
【发布时间】:2014-09-06 13:26:42
【问题描述】:

我正在创建一个 Android 应用,它需要发出一些并行 HTTP/HTTPS 请求(正好 10 个)。

第一步

如何在 android 中发出这种并行请求?

是否可以同时使用 HTTP 和 HTTPS?

Obs: 在 google 中搜索,我找到了ExecutorService。我可以在android中使用它吗? (有人有例子吗?)

第二步

如果有人帮助解决第一个问题,我将有以下情况:

1 request one started   -- (working) --> cloud
2 request two started   -- (working) --> cloud
3 request three started -- (working) --> cloud

几秒钟后,线程 2 第一个说“我完成了我的工作,这是页面的响应”,线程 1 和 3 正在工作。

如何停止/终止线程 1 和 3?

【问题讨论】:

    标签: java android multithreading http https


    【解决方案1】:
    1. 是的,你可以使用 ExecutorService

      ExecutorService executorService = Executors.newFixedThreadPool(n);

    然后使用提交函数执行任务

    executorService.submit(Runnable task);
    

    但不能保证所有任务都会同时执行,这取决于可用资源。

    2。 您可以关闭池;

    executorService.shutdown();
    

    但是除了尽力停止处理正在执行的任务之外,没有任何保证。

    如果你想使用 asyncTask 请注意: 从 HONEYCOMB 开始,任务在单线程上执行,以避免并行执行导致的常见应用程序错误。

    所以任务在单个线程上执行而不是多个线程

    【讨论】:

    • 你知道我是否可以将执行器服务与异步任务结合起来吗?
    • @ronniery 将执行器服务与异步任务结合起来毫无意义。
    • 所以你为我解释了这个问题,什么是最好的异步任务或执行器(可运行)(我想为 2.3 到 4.4 android os 构建应用程序)?
    • 答案是视情况而定:AsyncTasks 最好用于短时间的操作(最多几秒钟)。如果您需要保持线程长时间运行,强烈建议您使用 java.util.concurrent 包提供的各种 API,例如 Executor、ThreadPoolExecutor 和 FutureTask。
    猜你喜欢
    • 2019-06-08
    • 1970-01-01
    • 1970-01-01
    • 2014-05-19
    • 1970-01-01
    • 1970-01-01
    • 2016-05-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多