在Android中,Executors.newFixedThreadPool(size)
是考虑CPU核心,还是我应该这样做。它值得吗?
如果我想一次加载50张图片,我可能会想要创建一个包含50个线程的固定线程池,但是:
可能是因为这可能比使用2-3个线程的执行者更慢,对吧?
那么,newFixedThreadPool
是考虑CPU核心(应该是它)还是我应该这样做。
答案 0 :(得分:1)
在Android中,Executors.newFixedThreadPool(size)将考虑CPU内核
没有。您指定线程数。 Android不会以某种方式根据设备具有的CPU核心来扩展该线程数量,更不用说当前活动的CPU核心数量了。
我应该这样做吗
可能。
值得吗?
可能。在您的情况下,您受到严重的I / O限制,因此拥有多个线程是个好主意。但是,50可能太多(您引用的上下文切换,加上50个堆栈的堆空间)。典型的大小调整算法是(2 *数字核心)+ 1。