Class ThreadJobExecutor

  • All Implemented Interfaces:
    JobExecutor

    public class ThreadJobExecutor
    extends Object
    implements JobExecutor
    This is a job executor which executes jobs in the current thread. This has the disadvantage that a misbehaving job can interfere with other jobs and the job agent. For example, a call to System.exit(int) would result in all other jobs as well as the job agent getting killed.

    The advantage is that there is no overhead in time or memory.

    Version:
    2.0
    Author:
    nicklas
    Last modified
    $Date: 2014-04-09 14:21:20 +0200 (on, 09 apr 2014) $
    • Field Detail

      • log

        private static final org.slf4j.Logger log
        Log job agent events.
    • Constructor Detail

      • ThreadJobExecutor

        public ThreadJobExecutor()
    • Method Detail

      • init

        public void init​(Agent agent)
        Description copied from interface: JobExecutor
        Initialize the job executor. This method is called once immediately after the object has been created.
        Specified by:
        init in interface JobExecutor
        Parameters:
        agent - The agent
      • executeJob

        public void executeJob​(SessionControl sc,
                               Agent agent,
                               Job job,
                               JobAgentSettings settings,
                               Job.ExecutionTime usedSlot)
        Description copied from interface: JobExecutor
        Execute the specified job. This method is called in a new thread created specifically for running that job. If the agent is shutting down it will send an interrupt signal to all job threads. It is up to the job executor to decide how to handle this. It may either decide to kill the job or let it continue as if nothing happened.

        The job sent to this method has it's status set to Job.Status.PREPARED. The implementation of this method must change the status to either Job.Status.DONE or Job.Status.ERROR. If the status hasn't changed the job agent will set the status to signal an unknown error.

        Specified by:
        executeJob in interface JobExecutor
        Parameters:
        sc - A SessionControl where the owner of the job is logged in and the correct active project is set
        agent - The agent that sent the request to execute the job
        job - The job to execute
        settings - The specific settings used for the plugin on this job agent or null if no settings has been specified
        usedSlot - The slot that was used to execut the job
      • close

        public void close()
        Description copied from interface: JobExecutor
        This method is called at when the agent is stopped or paused. No more execution requests will be sent to the current job executor, but running jobs should NOT be terminated due to this method beeing called.
        Specified by:
        close in interface JobExecutor
      • setSignalReceiver

        private void setSignalReceiver​(SignalReceiver signalReceiver)
      • main

        public static void main​(String[] args)