code: public void doBackgroundOp( final Runnable run, final boolean showWaitCursor )
    {
      final Component[] key = new Component[1];
      ExecutorService jobRunner = getJobRunner();
      if( jobRunner != null )
      {
        jobRunner.submit( () -> performBackgroundOp( run, key, showWaitCursor ) );
      }
      else
      {
        run.run();
      }
    }
docs: Runs a job in a background thread, using the ExecutorService, and optionally
  sets the cursor to the wait cursor and blocks input.