code: public boolean offer(T t) {
          boolean retval=size() < capacity && super.offer(t);
          if(waiting_takers.get() > 0) {
              lock.lock();
              try {
                  not_empty.signal();
              }
              finally {
                  lock.unlock();
              }
          }
  
          return retval;
      }
docs: Drops elements if capacity has been reached. That's OK for the ThreadPoolExecutor as dropped messages
  will get retransmitted
  @param t
  @return