code: public ScheduledFuture<?> schedule() {
          synchronized (this.triggerContextMonitor) {
              this.scheduledExecutionTime = this.trigger.nextExecutionTime(this.triggerContext);
              if (this.scheduledExecutionTime == null) {
                  return null;
              }
              long initialDelay = this.scheduledExecutionTime.getTime() - System.currentTimeMillis();
              this.currentFuture = this.executor.schedule(this, initialDelay, TimeUnit.MILLISECONDS);
              return this;
          }
      }
docs: Schedule.
  
  @return the scheduled future