I can run scala\'s foreach in parallel like that:
val N = 100
(0 until N).par.foreach(i => {
// do something
})
But how can I set thread
Every parallel collection keeps a tasksupport
object which keeps a reference to thread pool implementation.
So, you can set the parallelism level through that object by changing the reference of tasksupport
object to a new thread pool according to your need. eg:
def f(numOfThread: Int, n: Int) = {
import scala.collection.parallel._
val coll = (0 to n).par
coll.tasksupport = new ForkJoinTaskSupport(new scala.concurrent.forkjoin.ForkJoinPool(numOfThreads))
coll.foreach(i => {
// do something
})
}
f(2, 100)
For more info on configuring parallel collections you can refer http://docs.scala-lang.org/overviews/parallel-collections/configuration.html