org.springframework.scheduling.support

Class PeriodicTrigger

  • java.lang.Object
    • org.springframework.scheduling.support.PeriodicTrigger
  • All Implemented Interfaces:
    Trigger


    public class PeriodicTrigger
    extends java.lang.Object
    implements Trigger
    A trigger for periodic task execution. The period may be applied as either fixed-rate or fixed-delay, and an initial delay value may also be configured. The default initial delay is 0, and the default behavior is fixed-delay (i.e. the interval between successive executions is measured from each completion time). To measure the interval between the scheduled start time of each execution instead, set the 'fixedRate' property to true.

    Note that the TaskScheduler interface already defines methods for scheduling tasks at fixed-rate or with fixed-delay. Both also support an optional value for the initial delay. Those methods should be used directly whenever possible. The value of this Trigger implementation is that it can be used within components that rely on the Trigger abstraction. For example, it may be convenient to allow periodic triggers, cron-based triggers, and even custom Trigger implementations to be used interchangeably.

    Since:
    3.0
    Author:
    Mark Fisher
    • Constructor Summary

      Constructors 
      Constructor and Description
      PeriodicTrigger(long period)
      Create a trigger with the given period in milliseconds.
      PeriodicTrigger(long period, java.util.concurrent.TimeUnit timeUnit)
      Create a trigger with the given period and time unit.
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method and Description
      boolean equals(java.lang.Object other) 
      long getInitialDelay()
      Return the initial delay, or 0 if none.
      long getPeriod()
      Return this trigger's period.
      java.util.concurrent.TimeUnit getTimeUnit()
      Return this trigger's time unit (milliseconds by default).
      int hashCode() 
      boolean isFixedRate()
      Return whether this trigger uses fixed rate (true) or fixed delay (false) behavior.
      java.util.Date nextExecutionTime(TriggerContext triggerContext)
      Returns the time after which a task should run again.
      void setFixedRate(boolean fixedRate)
      Specify whether the periodic interval should be measured between the scheduled start times rather than between actual completion times.
      void setInitialDelay(long initialDelay)
      Specify the delay for the initial execution.
      • Methods inherited from class java.lang.Object

        clone, finalize, getClass, notify, notifyAll, toString, wait, wait, wait
    • Constructor Detail

      • PeriodicTrigger

        public PeriodicTrigger(long period)
        Create a trigger with the given period in milliseconds.
      • PeriodicTrigger

        public PeriodicTrigger(long period,
                               @Nullable
                               java.util.concurrent.TimeUnit timeUnit)
        Create a trigger with the given period and time unit. The time unit will apply not only to the period but also to any 'initialDelay' value, if configured on this Trigger later via setInitialDelay(long).
    • Method Detail

      • getPeriod

        public long getPeriod()
        Return this trigger's period.
        Since:
        5.0.2
      • getTimeUnit

        public java.util.concurrent.TimeUnit getTimeUnit()
        Return this trigger's time unit (milliseconds by default).
        Since:
        5.0.2
      • setInitialDelay

        public void setInitialDelay(long initialDelay)
        Specify the delay for the initial execution. It will be evaluated in terms of this trigger's TimeUnit. If no time unit was explicitly provided upon instantiation, the default is milliseconds.
      • getInitialDelay

        public long getInitialDelay()
        Return the initial delay, or 0 if none.
        Since:
        5.0.2
      • setFixedRate

        public void setFixedRate(boolean fixedRate)
        Specify whether the periodic interval should be measured between the scheduled start times rather than between actual completion times. The latter, "fixed delay" behavior, is the default.
      • isFixedRate

        public boolean isFixedRate()
        Return whether this trigger uses fixed rate (true) or fixed delay (false) behavior.
        Since:
        5.0.2
      • nextExecutionTime

        public java.util.Date nextExecutionTime(TriggerContext triggerContext)
        Returns the time after which a task should run again.
        Specified by:
        nextExecutionTime in interface Trigger
        Parameters:
        triggerContext - context object encapsulating last execution times and last completion time
        Returns:
        the next execution time as defined by the trigger, or null if the trigger won't fire anymore
      • equals

        public boolean equals(java.lang.Object other)
        Overrides:
        equals in class java.lang.Object
      • hashCode

        public int hashCode()
        Overrides:
        hashCode in class java.lang.Object