private void signalNotEmpty(){
  final ReentrantLock takeLock=this.takeLock;
  takeLock.lock();
  try {
    notEmpty.signal();
  }
  finally {
    takeLock.unlock();
  }
}

private void signalNotEmpty ( ) { final ReentrantLock takeLock = this . takeLock ; takeLock . lock ( ) ; try { notEmpty . signal ( ) ; } finally { takeLock . unlock ( ) ; } }
signals a waiting take . called only from put / offer ( which do not otherwise ordinarily lock takelock . )
