code: private void notifyGet_() {
          // a notification may be lost in some cases - however
          // as none of the threads wait endlessly, a waiting thread
          // will either be notified, or will eventually wakeup
          int lastWaitIndex = getQueueIndex(getQueueLocks_, getQueueCounter_, false);
          int lockIndex = lastWaitIndex;
          for (int i = 0; i < getQueueLocks_.length; i++) {
  
              // are threads waiting on this queue?
              if (getQueueLocks_[lockIndex].threadsWaiting > 0) {
                  synchronized (getQueueLocks_[lockIndex]) {
                      // make sure we are actually notifying somebody
                      // now that the lock is held
                      if (getQueueLocks_[lockIndex].threadsWaiting > 0) {
                          getQueueLocks_[lockIndex].notify();
                          return;
                      } else {
                          // somebody stole my notify, make up for it
                          // by allowing another attempt
                          i--;
                      }
                  }
              }
  
              // check to see whether a new thread has waited
              int checkIndex = getQueueIndex(getQueueLocks_, getQueueCounter_, false);
              if (checkIndex != lastWaitIndex) {
                  // restart scan from the new wait index
                  lockIndex = checkIndex;
                  lastWaitIndex = lockIndex;
                  i = 0;
              } else {
                  // increment to next element
                  lockIndex = ++lockIndex % getQueueLocks_.length;
              }
          }
  
          // D638088 - if we get here, the entire lock array was scanned and
          // nobody was found to notify.
      }
docs: D638088 - implemented split locks for get queue