com.google.common.util.concurrent

## Class AbstractScheduledService.CustomScheduler

- java.lang.Object
- - com.google.common.util.concurrent.AbstractScheduledService.Scheduler
  - - com.google.common.util.concurrent.AbstractScheduledService.CustomScheduler

- Enclosing class:
    AbstractScheduledService

      @Beta
      public abstract static class AbstractScheduledService.CustomScheduler
      extends AbstractScheduledService.Scheduler

  A `AbstractScheduledService.Scheduler` that provides a convenient way for the `AbstractScheduledService` to use a dynamically changing schedule. After every execution of the task, assuming it hasn't been cancelled, the `getNextSchedule()` method will be called.
  Since:
    11.0

- - ### Nested Class Summary

    Nested Classes
    Modifier and Type | Class and Description
    --- | ---
    `protected static class` | `AbstractScheduledService.CustomScheduler.Schedule` A value object that represents an absolute delay until a task should be invoked.

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `AbstractScheduledService.CustomScheduler()`

  - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `protected abstract AbstractScheduledService.CustomScheduler.Schedule` | `getNextSchedule()` Calculates the time at which to next invoke the task.

    - ### Methods inherited from class com.google.common.util.concurrent.AbstractScheduledService.Scheduler

      `newFixedDelaySchedule, newFixedRateSchedule`

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- - ### Constructor Detail

    - #### AbstractScheduledService.CustomScheduler

          public AbstractScheduledService.CustomScheduler()

  - ### Method Detail

    - #### getNextSchedule

          protected abstract AbstractScheduledService.CustomScheduler.Schedule getNextSchedule()
                                                                                        throws java.lang.Exception

      Calculates the time at which to next invoke the task.

      This is guaranteed to be called immediately after the task has completed an iteration and on the same thread as the previous execution of `AbstractScheduledService.runOneIteration()`.

      Returns:
        a schedule that defines the delay before the next execution.
      Throws:
        `java.lang.Exception`