Class Task


  • public final class Task
    extends java.lang.Object
    Runs a block of code periodically. A Task can be started at a given time in the future and can be a daemon. The block of code will be passed a Log object each time it is run through its ICode interface.

    If the code block takes longer than the period to run, the next task invocation will occur immediately. In this case, tasks will not occur at precise multiples of the period. For example, if you run a task every 30 seconds, and the first run takes 40 seconds but the second takes 20 seconds, your task will be invoked at 0 seconds, 40 seconds and 70 seconds (40 seconds + 30 seconds), which is not an even multiple of 30 seconds.

    In general, this is a simple task class designed for polling activities. If you need precise guarantees, you probably should be using a different task class.

    Since:
    1.2.6
    Author:
    Jonathan Locke
    • Constructor Summary

      Constructors 
      Constructor Description
      Task​(java.lang.String name)
      Constructor.
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      protected org.slf4j.Logger getLog()
      Gets the log for this Task.
      int getPriority()
      Gets the thread priority
      void interrupt()
      Interrupts the Task as soon as it has the opportunity.
      void run​(java.time.Duration frequency, ICode code)
      Runs this Task at the given frequency.
      void setDaemon​(boolean daemon)
      Sets daemon or not.
      void setLog​(org.slf4j.Logger log)
      Sets log for user code to log to when task runs.
      void setPriority​(int prio)
      Sets the priority of the thread
      void setStartTime​(java.time.Instant startTime)
      Sets start time for this task.
      void stop()
      Stops this Task as soon as it has the opportunity.
      java.lang.String toString()  
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
    • Constructor Detail

      • Task

        public Task​(java.lang.String name)
        Constructor.
        Parameters:
        name - the name of this Task
    • Method Detail

      • run

        public final void run​(java.time.Duration frequency,
                              ICode code)
        Runs this Task at the given frequency. You may only call this method if the task has not yet been started. If the task is already running, an IllegalStateException will be thrown.
        Parameters:
        frequency - the frequency at which to run the code
        code - the code to run
        Throws:
        java.lang.IllegalStateException - thrown if task is already running
      • setDaemon

        public void setDaemon​(boolean daemon)
        Sets daemon or not. For obvious reasons, this value can only be set before the task starts running. If you attempt to set this value after the task starts running, an IllegalStateException will be thrown.
        Parameters:
        daemon - true if this Task's Thread should be a daemon
        Throws:
        java.lang.IllegalStateException - thrown if task is already running
      • setLog

        public void setLog​(org.slf4j.Logger log)
        Sets log for user code to log to when task runs.
        Parameters:
        log - the log
      • setStartTime

        public void setStartTime​(java.time.Instant startTime)
        Sets start time for this task. You cannot set the start time for a task which is already running. If you attempt to, an IllegalStateException will be thrown.
        Parameters:
        startTime - The time this task should start running
        Throws:
        java.lang.IllegalStateException - Thrown if task is already running
      • toString

        public java.lang.String toString()
        Overrides:
        toString in class java.lang.Object
        See Also:
        Object.toString()
      • getLog

        protected org.slf4j.Logger getLog()
        Gets the log for this Task.
        Returns:
        the log
      • stop

        public void stop()
        Stops this Task as soon as it has the opportunity.
      • interrupt

        public void interrupt()
        Interrupts the Task as soon as it has the opportunity.
      • setPriority

        public void setPriority​(int prio)
        Sets the priority of the thread
        Parameters:
        prio -
      • getPriority

        public int getPriority()
        Gets the thread priority
        Returns:
        priority