关于java:多个http请求和取消请求 | 珊瑚贝

Multiple http requests with cancel request


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

第一步

如何在 android 中进行并行请求?

可以同时使用HTTP和HTTPS吗?

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

第二步

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

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

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

如何停止/杀死线程 1 和 3?


  • 是的,你可以使用 ExecutorService

    ExecutorService executorService = Executors.newFixedThreadPool(n);

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

    1
    executorService.submit(Runnable task);

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

    2。
    您可以关闭池;

    1
    executorService.shutdown();

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

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

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

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


    来源:https://www.codenong.com/25700762/

    微信公众号
    手机浏览(小程序)
    0
    分享到:
    没有账号? 忘记密码?