code: public void start() {
  		
  		lock.lock();
  		
  		try {
  			executorService = Executors.newSingleThreadScheduledExecutor();
  			
  			try {
  				startUp();
  			} catch (Throwable t) {
  				LOGGER.info("Exception in service start up", t);
  			}
  			
  			currentFuture = executorService.schedule(new RunOneIterationAndReschedule(), 0, TimeUnit.MILLISECONDS);
  		} finally {
  			lock.unlock();
  		}
  	}
docs: Start the background service/thread