使用executeOnExecuter可以执行多少并行执行?

时间:2017-03-30 10:50:21

标签: android multithreading android-asynctask

在我的应用程序中,当用户点击列表中的文档时,我需要为文档提供下载功能。

因此,对于多个活动线程AsyncTask进入我的脑海。但我也注意到人们没有推荐AsyncTask用于这种操作。因为在这种情况下大号没有。线程将开始点击文档。

不采取AsynTask的另一个原因是"现代AsyncTask仅限于128个并发任务"。意味着如果您在完成之前排队超过138个任务,您的应用程序将崩溃。

  1. executeOnExecutor()方法会解决我的目的还是需要重新考虑一下?
  2. 如果我同时启动50个任务,那么所有这些任务都会通过executeOnExecutor()运行simeltenioulsy?
  3. 并发任务限制(128)也适用于executeOnExecutor()?
  4. 我期待完美的答案。

1 个答案:

答案 0 :(得分:1)

  

不采取AsynTask的另一个原因是"现代AsyncTask仅限于128个并发任务"。意味着如果您在完成之前排队超过138个任务,您的应用程序将崩溃。

更准确地说,AsyncTask的内置执行程序使用128个元素的工作队列来处理等待线程的请求。但请注意,此限制未记录在案,可能会发生变化。

  

executeOnExecutor()方法会解决我的目的吗

这完全取决于您向Executor提供的executeOnExecutor()

  

如果我同时启动50个任务,那么所有这些任务都会通过executeOnExecutor()运行simeltenioulsy?

没有。首先,你的CPU没有那么多内核。

  

并发任务限制(128)也适用于executeOnExecutor()?

仅当您设置具有该限制的Executor时。如果您使用两个内置AsyncTask执行程序之一(SERIAL_EXECUTORTHREAD_POOL_EXECUTOR),那么是,那个队列限制应该到位。

相关问题