code: public void start() {
          if(actionInBackground != null) {
  
              Runnable jobToRun = new Runnable() {
                  @Override
                  public void run() {
                      result = (JobResult) actionInBackground.doAsync();
                      onResult();
                  }
              };
  
              if(getExecutorService() != null) {
                 asyncFutureTask = (FutureTask) getExecutorService().submit(jobToRun);
              } else {
                  asyncThread = new Thread(jobToRun);
                  asyncThread.start();
              }
          }
      }
docs: Begins the background execution providing a result, similar to an AsyncTask.
  It will execute it on a new Thread or using the provided ExecutorService