public void readerWait(Object notifier,long time){
  try {
synchronized (notifier) {
      readUnlock();
      notifier.wait(time);
    }
  }
 catch (  InterruptedException e) {
    throw new ConcurrentLockException("read wait interrupted in thread");
  }
 finally {
    readLock();
  }
}

public void readerWait ( Object notifier , long time ) { try { synchronized ( notifier ) { readUnlock ( ) ; notifier . wait ( time ) ; } } catch ( InterruptedException e ) { throw new ConcurrentLockException ( "read wait interrupted in thread" ) ; } finally { readLock ( ) ; } }
release a read lock , wait the given period of time or until notified by notifier , then obtain a read lock again . throws concurrentlockexception if the thread gets interrupted ; in that case , the read lock is still held .
