Package edu.jas.util

Class ThreadPool


  • public class ThreadPool
    extends java.lang.Object
    Thread pool using stack / list workpile.
    Author:
    Akitoshi Yoshida, Heinz Kredel
    • Field Summary

      Fields 
      Modifier and Type Field Description
      protected int idleworkers
      Number of idle workers.
      protected java.util.LinkedList<java.lang.Runnable> jobstack
      Work queue / stack.
      protected boolean shutdown
      Shutdown request.
      protected StrategyEnumeration strategy  
      protected edu.jas.util.PoolThread[] workers
      Array of workers.
    • Constructor Summary

      Constructors 
      Constructor Description
      ThreadPool()
      Constructs a new ThreadPool with strategy StrategyEnumeration.FIFO and size DEFAULT_SIZE.
      ThreadPool​(int size)
      Constructs a new ThreadPool with strategy StrategyEnumeration.FIFO.
      ThreadPool​(StrategyEnumeration strategy)
      Constructs a new ThreadPool with size DEFAULT_SIZE.
      ThreadPool​(StrategyEnumeration strategy, int size)
      Constructs a new ThreadPool.
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      void addJob​(java.lang.Runnable job)
      adds a job to the workpile.
      int cancel()
      Cancels the threads.
      protected java.lang.Runnable getJob()
      get a job for processing.
      int getNumber()
      number of worker threads.
      StrategyEnumeration getStrategy()
      get used strategy.
      boolean hasJobs()
      check if there are jobs for processing.
      boolean hasJobs​(int n)
      check if there are more than n jobs for processing.
      void init()
      thread initialization and start.
      void terminate()
      Terminates the threads.
      java.lang.String toString()
      toString.
      • Methods inherited from class java.lang.Object

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

      • workers

        protected edu.jas.util.PoolThread[] workers
        Array of workers.
      • idleworkers

        protected int idleworkers
        Number of idle workers.
      • shutdown

        protected volatile boolean shutdown
        Shutdown request.
      • jobstack

        protected java.util.LinkedList<java.lang.Runnable> jobstack
        Work queue / stack.
    • Constructor Detail

      • ThreadPool

        public ThreadPool()
        Constructs a new ThreadPool with strategy StrategyEnumeration.FIFO and size DEFAULT_SIZE.
      • ThreadPool

        public ThreadPool​(StrategyEnumeration strategy)
        Constructs a new ThreadPool with size DEFAULT_SIZE.
        Parameters:
        strategy - for job processing.
      • ThreadPool

        public ThreadPool​(int size)
        Constructs a new ThreadPool with strategy StrategyEnumeration.FIFO.
        Parameters:
        size - of the pool.
      • ThreadPool

        public ThreadPool​(StrategyEnumeration strategy,
                          int size)
        Constructs a new ThreadPool.
        Parameters:
        strategy - for job processing.
        size - of the pool.
    • Method Detail

      • init

        public void init()
        thread initialization and start.
      • toString

        public java.lang.String toString()
        toString.
        Overrides:
        toString in class java.lang.Object
      • getNumber

        public int getNumber()
        number of worker threads.
      • terminate

        public void terminate()
        Terminates the threads.
      • cancel

        public int cancel()
        Cancels the threads.
      • addJob

        public void addJob​(java.lang.Runnable job)
        adds a job to the workpile.
        Parameters:
        job -
      • getJob

        protected java.lang.Runnable getJob()
                                     throws java.lang.InterruptedException
        get a job for processing.
        Throws:
        java.lang.InterruptedException
      • hasJobs

        public boolean hasJobs()
        check if there are jobs for processing.
      • hasJobs

        public boolean hasJobs​(int n)
        check if there are more than n jobs for processing.
        Parameters:
        n - Integer
        Returns:
        true, if there are possibly more than n jobs.