code: public RetryTemplateBuilder exponentialBackoff(long initialInterval,
  			double multiplier, long maxInterval, boolean withRandom) {
  		Assert.isNull(this.backOffPolicy, "You have already selected backoff policy");
  		Assert.isTrue(initialInterval >= 1, "Initial interval should be >= 1");
  		Assert.isTrue(multiplier > 1, "Multiplier should be > 1");
  		Assert.isTrue(maxInterval > initialInterval,
  				"Max interval should be > than initial interval");
  		ExponentialBackOffPolicy policy = withRandom
  				? new ExponentialRandomBackOffPolicy() : new ExponentialBackOffPolicy();
  		policy.setInitialInterval(initialInterval);
  		policy.setMultiplier(multiplier);
  		policy.setMaxInterval(maxInterval);
  		this.backOffPolicy = policy;
  		return this;
  	}
docs: Use exponential backoff policy. The formula of backoff period (without randomness):
  <p>
  {@code currentInterval = Math.min(initialInterval * Math.pow(multiplier, retryNum), maxInterval)}
  <p>
  (for first attempt retryNum = 0)
  @param initialInterval in milliseconds
  @param multiplier see the formula above
  @param maxInterval in milliseconds
  @param withRandom adds some randomness to backoff intervals. For details, see
  {@link ExponentialRandomBackOffPolicy}
  @return this
  @see ExponentialBackOffPolicy
  @see ExponentialRandomBackOffPolicy