Uploaded image for project: 'JDK'
  1. JDK
  2. JDK-8227018

CompletableFuture should not call Runtime.availableProcessors on fast path

    Details

      Backports

        Description

        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.

          Attachments

            Issue Links

              Activity

                People

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

                  Dates

                  • Created:
                    Updated:
                    Resolved: