docs: public void close() throws IOException {
          lock.lock();
          try {
              if(closed) return;
              closed=true;
              not_empty.signalAll();
              not_full.signalAll();
          }
          finally {
              lock.unlock();
          }
      }