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();
    }
  }
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 ( ) ; } }
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}.