CompletableFuture should not call Runtime.availableProcessors on fast path

XMLWordPrintable

        In 8u, CompletableFuture calls Runtime.availableProcessors during spin in waitingGet:

            private Object waitingGet(boolean interruptible) {
        ...
                while ((r = result) == null) {
                    if (spins < 0)
                        spins = (Runtime.getRuntime().availableProcessors() > 1) ?
                            1 << 8 : 0; // Use brief spin-wait on multiprocessors

        Unfortunately, that falls victim to JDK-8227006, which makes it too costly. This is fixed in 9 with JDK-8134851, but that patch is too large and intrusive to backport to 8u. Therefore, we should consider backporting the small part of that patch that deals with availableProcessors handling.

              Assignee:
              Aleksey Shipilev
              Reporter:
              Aleksey Shipilev
              Votes:
              0 Vote for this issue
              Watchers:
              4 Start watching this issue

                Created:
                Updated:
                Resolved: