Executors.newFixedThreadPool(大小)是考虑CPU核心,还是我应该这样做。它值得吗?

时间:2016-06-21 13:14:17

标签: android multithreading concurrency

在Android中,Executors.newFixedThreadPool(size)是考虑CPU核心,还是我应该这样做。它值得吗?

如果我想一次加载50张图片,我可能会想要创建一个包含50个线程的固定线程池,但是:

  • 上下文切换
  • 可用CPU数量

可能是因为这可能比使用2-3个线程的执行者更慢,对吧?

那么,newFixedThreadPool是考虑CPU核心(应该是它)还是我应该这样做。

1 个答案:

答案 0 :(得分:1)

  

在Android中,Executors.newFixedThreadPool(size)将考虑CPU内核

没有。您指定线程数。 Android不会以某种方式根据设备具有的CPU核心来扩展该线程数量,更不用说当前活动的CPU核心数量了。

  我应该这样做吗

可能。

  

值得吗?

可能。在您的情况下,您受到严重的I / O限制,因此拥有多个线程是个好主意。但是,50可能太多(您引用的上下文切换,加上50个堆栈的堆空间)。典型的大小调整算法是(2 *数字核心)+ 1。