Class Scheduler

java.lang.Object
java.lang.Thread
org.apache.log4j.scheduler.Scheduler
All Implemented Interfaces:
Runnable

public class Scheduler extends Thread
A simple but still useful implementation of a Scheduler (in memory only).

This implementation will work very well when the number of scheduled job is small, say less than 100 jobs. If a larger number of events need to be scheduled, than a better adapted data structure for the jobList can give improved performance.
  • Field Details

  • Constructor Details

    • Scheduler

      public Scheduler()
      Create new instance.
  • Method Details

    • findIndex

      int findIndex(Job job)
      Find the index of a given job.
      Parameters:
      job - job
      Returns:
      -1 if the job could not be found.
    • delete

      public boolean delete(Job job)
      Delete the given job.
      Parameters:
      job - job.
      Returns:
      true if the job could be deleted, and false if the job could not be found or if the Scheduler is about to shutdown in which case deletions are not permitted.
    • schedule

      public void schedule(Job job, long desiredTime)
      Schedule a Job for execution at system time given by the desiredTime parameter.
      Parameters:
      job - job to schedule.
      desiredTime - desired time of execution.
    • schedule

      public void schedule(Job job, long desiredTime, long period)
      Schedule a Job for execution at system time given by the desiredTime parameter.

      The job will be rescheduled. It will execute with a frequency determined by the period parameter.
      Parameters:
      job - job to schedule.
      desiredTime - desired time of execution.
      period - repeat period.
    • changePeriod

      public boolean changePeriod(Job job, long newPeriod)
      Change the period of a job. The original job must exist for its period to be changed.

      The method returns true if the period could be changed, and false otherwise.
      Parameters:
      job - job.
      newPeriod - new repeat period.
      Returns:
      true if period could be changed.
    • schedule

      private void schedule(Scheduler.ScheduledJobEntry newSJE)
      Schedule a job.
      Parameters:
      newSJE - new job entry.
    • shutdown

      public void shutdown()
      Shut down scheduler.
    • run

      public void run()
      Run scheduler.
      Specified by:
      run in interface Runnable
      Overrides:
      run in class Thread
    • executeInABox

      void executeInABox(Job job)
      We do not want a single failure to affect the whole scheduler.
      Parameters:
      job - job to execute.
    • linger

      void linger()
      Wait for notification.
    • linger

      void linger(long timeToLinger)
      Wait for notification or time to elapse.
      Parameters:
      timeToLinger - time to linger.