code: public synchronized void start() {
      if (running) {
        log.atInfo().log("%s is already started", this);
        return;
      }
      log.atInfo().log("starting %s", this);
      this.stopped = false;
      this.running = true;
      this.reportStopwatch.reset().start();
      try {
        schedulerThread = threads.newThread(new Runnable() {
          @Override
          public void run() {
            scheduleFlushes();
          }
        });
        schedulerThread.start();
      } catch (RuntimeException e) {
        log.atInfo().log(BACKGROUND_THREAD_ERROR);
        schedulerThread = null;
        initializeFlushing();
      }
    }
docs: Starts processing.
  
  Calling this method
  
  starts the thread that regularly flushes all enabled caches. enables the other methods on the
  instance to be called successfully
  
  I.e, even when the configuration disables aggregation, it is invalid to access the other
  methods of an instance until ``start`` is called - Calls to other public methods will fail with
  an {@code IllegalStateError}.