Hi Christian,

On 8/08/2016 9:16 AM, Claes Redestad wrote:
Hi Christian,

have you looked at java.util.concurrent.ForkJoinPool.commonPool()?

That isn't quite the same thing as a general shared executor.

/Claes

On 2016-08-08 00:51, Christian Schulte wrote:
Hello,

whenever I need to update an existing codebase to add some kind of
parallelization, I am in the need of an executor matching the number of
processors available at runtime. Most of the time I end up using
something like:

'Executors.newFixedThreadPool(Runtime.getRuntime().availableProcessors())'


If every library used by an application needs to maintain its' own
executors the application ends up with starting number of libraries used
times number of available processors threads. That does not scale. I

Libraries in general should not be defining how their functionality gets executed. If a "library" is really a subsystem that might utilize/benefit-from parallelization then it should not encapsulate/hide that aspect but make it explicitly part of the initialization API for itself ie it should be able to accept an Executor/ExecutorService to use. Ultimately it is the application that has to try and control these things, so libraries must provide API's to allow for cooperation with their hosting applications.

The default FJPool was a special case to support the parallel streams libraries. It is not an ideal solution.

My 2c.

Cheers,
David

think there really is a need for some kind of default executor provided
by the platform. I am suprised I cannot find anything like that
anywhere. I would like to request an enhancement providing such a
default platform executor everyone can use to add parallelization
without ending up with tons of threads when all you want is making use
of the system's parallelization capabilities.

Regards,

Reply via email to