code: public synchronized void complete() {
          if( logger.isInfoEnabled() ) {
              logger.info("[" + this + "] Marking complete");
          }
          if( loaded ) {
              return;
          }
          loaded = true;
          lastTouch = System.currentTimeMillis();
          if( waiting != null && waiting.isEmpty() ) {
              waiting = null;
          }
          notifyAll();
      }
docs: Marks the jiterator as complete. Once you call this method, you cannot add any more
  items into the jiterator. If you fail to call this method, any threads reading from this
  jiterator will ultimately hang until you call this method.