2016-06-21 26 views
1

在Android中,Executors.newFixedThreadPool(size)會考慮CPU內核,還是應該這樣做。這值得嗎?Executors.newFixedThreadPool(size)將考慮CPU內核,還是應該這樣做。這值得嗎?

如果我想一次加載50張圖片,我可能會創建一個固定的線程池有50個線程,但:

上下文切換
  • 一些
    • 可用的CPU

    可能是這樣的因素,甚至可能比執行者使用2-3個線程更慢,對吧?

    那麼,newFixedThreadPool會考慮CPU內核(應該是)還是應該這樣做。

  • 回答

    1

    在Android中,是Executors.newFixedThreadPool(大小)要考慮的CPU核心

    號您指定的線程數。 Android不會以某種方式根據設備所具有的CPU內核來擴展該線程數量,更不用說目前活動的CPU內核數量。

    我應該做的

    可能。

    這是值得嗎?

    也許。在你的情況下,你很受I/O約束,所以有多個線程是一個好主意。然而,50可能太多(你引用的上下文切換,加上50堆的堆空間)。典型的尺寸算法是(2 *數量核心)+ 1.

    相關問題