Class JobExecutor

  • All Implemented Interfaces:
    java.lang.AutoCloseable

    public class JobExecutor
    extends java.lang.Object
    implements java.lang.AutoCloseable
    Main class to execute Jobs. Job executors must be explicitly shutdown using shutdown() if not used in a try-with-resources bloc
    Author:
    Mahmoud Ben Hassine ([email protected])
    • Constructor Summary

      Constructors 
      Constructor Description
      JobExecutor()
      Create a job executor.
      JobExecutor​(int nbWorkers)
      Create a job executor.
      JobExecutor​(java.util.concurrent.ExecutorService executorService)
      Create a job executor.
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      void awaitTermination​(long timeout, java.util.concurrent.TimeUnit unit)
      Wait for jobs to terminate.
      void close()  
      JobReport execute​(Job job)
      Execute a job synchronously.
      void shutdown()
      Shutdown the job executor.
      java.util.concurrent.Future<JobReport> submit​(Job job)
      Submit a job for asynchronous execution.
      java.util.List<java.util.concurrent.Future<JobReport>> submitAll​(java.util.List<Job> jobs)
      Submit jobs for execution.
      java.util.List<java.util.concurrent.Future<JobReport>> submitAll​(Job... jobs)
      Submit jobs for execution.
      • Methods inherited from class java.lang.Object

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

      • JobExecutor

        public JobExecutor()
        Create a job executor. The number of workers will be set to the number of available processors.
      • JobExecutor

        public JobExecutor​(int nbWorkers)
        Create a job executor.
        Parameters:
        nbWorkers - number of worker threads
      • JobExecutor

        public JobExecutor​(java.util.concurrent.ExecutorService executorService)
        Create a job executor.
        Parameters:
        executorService - to use to execute jobs
    • Method Detail

      • execute

        public JobReport execute​(Job job)
        Execute a job synchronously.
        Parameters:
        job - to execute
        Returns:
        the job report
      • submit

        public java.util.concurrent.Future<JobReport> submit​(Job job)
        Submit a job for asynchronous execution.
        Parameters:
        job - to execute
        Returns:
        a future of the job report
      • submitAll

        public java.util.List<java.util.concurrent.Future<JobReport>> submitAll​(Job... jobs)
        Submit jobs for execution.
        Parameters:
        jobs - to execute
        Returns:
        the list of job reports in the same order of submission
      • submitAll

        public java.util.List<java.util.concurrent.Future<JobReport>> submitAll​(java.util.List<Job> jobs)
        Submit jobs for execution.
        Parameters:
        jobs - to execute
        Returns:
        the list of job reports in the same order of submission
      • shutdown

        public void shutdown()
        Shutdown the job executor.
      • awaitTermination

        public void awaitTermination​(long timeout,
                                     java.util.concurrent.TimeUnit unit)
        Wait for jobs to terminate.
        Parameters:
        timeout - to wait for
        unit - of the timeout
      • close

        public void close()
                   throws java.io.IOException
        Specified by:
        close in interface java.lang.AutoCloseable
        Throws:
        java.io.IOException