2014-04-18 17 views

回答

4

假設沒有同時運行的進程和/或線程,這意味着所有的CPU和內核處於閒置狀態,這將是每個邏輯處理器線程的CPU。例如,如果您有一個具有4個內核的英特爾處理器,但這些內核具有超線程,則將有8個工作線程執行並行操作。

在任何情況下,這與availableProcessors方法返回的值相同在JDK中。

請注意,示例中的tabulate調用不是並行 - 它是按順序執行的。

0

據對this信息的評論中,默認爲每核心1個線程。

1

對於陣列上的par map,scala使用它的自定義ForkJoinThreadPool默認實現,它使用java運行時檢測到的處理器的數量。你可以看到它here

public ForkJoinPool() { 
     this(Math.min(MAX_CAP, Runtime.getRuntime().availableProcessors()), 
      defaultForkJoinWorkerThreadFactory, null, false); 
    }