code: public final void lockForReadInterruptibly(L locker) throws InterruptedException {
          if (Thread.interrupted()) {
              throw new InterruptedException();
          }
          if (!tryLockForRead(locker)) {
              lockForReadQueuedInterruptibly(locker, addReadWaiter());
          }
      }
docs: Acquire a shared read lock, possibly blocking until interrupted.
  
  @param locker object which might be write or upgrade lock owner