code: private int awaitWork(WorkQueue w) {
          int stat = 0;
          if (w != null && w.scanState < 0) {
              long c = ctl;
              if ((int)(c >> AC_SHIFT) + (config & SMASK) <= 0)
                  stat = timedAwaitWork(w, c);     // possibly quiescent
              else if ((runState & STOP) != 0)
                  stat = w.qlock = -1;             // pool terminating
              else if (w.scanState < 0) {
                  w.parker = Thread.currentThread();
                  if (w.scanState < 0)             // recheck after write
                      LockSupport.park(this);
                  w.parker = null;
                  if ((runState & STOP) != 0)
                      stat = w.qlock = -1;         // recheck
                  else if (w.scanState < 0)
                      Thread.interrupted();        // clear status
              }
          }
          return stat;
      }
docs: Possibly blocks worker w waiting for signal, or returns
  negative status if the worker should terminate. May return
  without status change if multiple stale unparks and/or
  interrupts occur.
  
  @param w the calling worker
  @return negative if w should terminate