9

I thought this would have been an easy thing to find but I've failed.

If I use GPars in my Groovy application and I don't specify a pool size how many threads will be created? Is there a default pool size without setting one?

// How many threads will be created? What is the default pool size?
GParsExecutorsPool.withPool {
    // do stuff...
}
C0deAttack
  • 24,419
  • 18
  • 73
  • 81

2 Answers2

18

It is (by default) set to

private static int defaultPoolSize() {
  return Runtime.getRuntime().availableProcessors() + 1;
}

You can alter this (I believe) by setting a System property called gpars.poolsize to a valid Integer

tim_yates
  • 167,322
  • 27
  • 342
  • 338
  • Why is it "availableProcessors" plus one? I'd expect it to be minus one, to leave one available for other systems? (unless of course you only have one to begin with!) – Nick Grealy May 11 '16 at 05:57
8

As many as you have CPU units plus one, as shown by the PoolUtils class source, or from a system property

retrieveDefaultPoolSize() is called once as a final static variable by the GParsPool class when it's initialized

Grooveek
  • 10,046
  • 1
  • 27
  • 37