RFR FJ parallelism zero

Mike Duigou mike.duigou at oracle.com
Wed Aug 14 22:38:45 UTC 2013


Looks fine.

Mike

On Aug 14 2013, at 14:59 , Chris Hegarty wrote:

> Source changes that follow Doug's mail on lambda-libs-spec-observers
> 
> http://mail.openjdk.java.net/pipermail/lambda-libs-spec-observers/2013-August/002361.html
> 
> These changes are already in the jsr166 CVS, and there is a test in OpenJDK that verifies the change.
> 
> diff --git a/src/share/classes/java/util/concurrent/ForkJoinPool.java b/src/share/classes/java/util/concurrent/ForkJoinPool.java
> --- a/src/share/classes/java/util/concurrent/ForkJoinPool.java
> +++ b/src/share/classes/java/util/concurrent/ForkJoinPool.java
> @@ -144,7 +144,8 @@ import java.util.concurrent.TimeUnit;
>  * Upon any error in establishing these settings, default parameters
>  * are used. It is possible to disable or limit the use of threads in
>  * the common pool by setting the parallelism property to zero, and/or
> - * using a factory that may return {@code null}.
> + * using a factory that may return {@code null}. However doing so may
> + * cause unjoined tasks to never be executed.
>  *
>  * <p><b>Implementation notes</b>: This implementation restricts the
>  * maximum number of running threads to 32767. Attempts to create
> @@ -3303,8 +3304,8 @@ public class ForkJoinPool extends Abstra
>         }
> 
>         if (parallelism < 0 && // default 1 less than #cores
> -            (parallelism = Runtime.getRuntime().availableProcessors() - 1) < 0)
> -            parallelism = 0;
> +            (parallelism = Runtime.getRuntime().availableProcessors() - 1) <= 0)
> +            parallelism = 1;
>         if (parallelism > MAX_CAP)
>             parallelism = MAX_CAP;
>         return new ForkJoinPool(parallelism, factory, handler, LIFO_QUEUE,
> 
> -Chris.




More information about the core-libs-dev mailing list