code: @Override
    public void run() {
      try {
        while (!delegate.isShutdown()) {
          this.rateLimiter.acquire();
          Runnable r = queue.take();
          if (!delegate.isShutdown()) {
            delegate.execute(r);
          }
        }
      } catch (InterruptedException ie) {
        LOG.info("Interrupted", ie);
      }
    }
docs: Main loop.