code: public ScheduledFuture<?> iterateAtFixedRate(long initialDelay, long period, TimeUnit unit, Collection<Runnable> commands)
      {
          return iterateAtFixedRate(initialDelay, period, unit, commands.iterator());
      }
docs: After initialDelay executes commands using collections iterator until either iterator has no more commands or command throws exception.
  @param initialDelay
  @param period
  @param unit
  @param commands
  @return
  @see java.util.concurrent.ScheduledThreadPoolExecutor#scheduleAtFixedDelay(java.lang.Runnable, long, long, java.util.concurrent.TimeUnit)