Class ForkJoinWorkerThread

  • All Implemented Interfaces:
    java.lang.Runnable
    Direct Known Subclasses:
    MonitorableThreadFactory.AkkaForkJoinWorkerThread

    public class ForkJoinWorkerThread
    extends java.lang.Thread
    A thread managed by a ForkJoinPool, which executes ForkJoinTasks. This class is subclassable solely for the sake of adding functionality -- there are no overridable methods dealing with scheduling or execution. However, you can override initialization and termination methods surrounding the main task processing loop. If you do create such a subclass, you will also need to supply a custom ForkJoinPool.ForkJoinWorkerThreadFactory to use it in a ForkJoinPool.
    Since:
    1.7
    • Nested Class Summary

      • Nested classes/interfaces inherited from class java.lang.Thread

        java.lang.Thread.State, java.lang.Thread.UncaughtExceptionHandler
    • Field Summary

      • Fields inherited from class java.lang.Thread

        MAX_PRIORITY, MIN_PRIORITY, NORM_PRIORITY
    • Constructor Summary

      Constructors 
      Modifier Constructor Description
      protected ForkJoinWorkerThread​(ForkJoinPool pool)
      Creates a ForkJoinWorkerThread operating in the given pool.
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      ForkJoinPool getPool()
      Returns the pool hosting this thread.
      int getPoolIndex()
      Returns the index number of this thread in its pool.
      protected void onStart()
      Initializes internal state after construction but before processing any tasks.
      protected void onTermination​(java.lang.Throwable exception)
      Performs cleanup associated with termination of this worker thread.
      void run()
      This method is required to be public, but should never be called explicitly.
      • Methods inherited from class java.lang.Thread

        activeCount, checkAccess, clone, countStackFrames, currentThread, dumpStack, enumerate, getAllStackTraces, getContextClassLoader, getDefaultUncaughtExceptionHandler, getId, getName, getPriority, getStackTrace, getState, getThreadGroup, getUncaughtExceptionHandler, holdsLock, interrupt, interrupted, isAlive, isDaemon, isInterrupted, join, join, join, onSpinWait, resume, setContextClassLoader, setDaemon, setDefaultUncaughtExceptionHandler, setName, setPriority, setUncaughtExceptionHandler, sleep, sleep, start, stop, suspend, toString, yield
      • Methods inherited from class java.lang.Object

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

      • ForkJoinWorkerThread

        protected ForkJoinWorkerThread​(ForkJoinPool pool)
        Creates a ForkJoinWorkerThread operating in the given pool.
        Parameters:
        pool - the pool this thread works in
        Throws:
        java.lang.NullPointerException - if pool is null
    • Method Detail

      • getPool

        public ForkJoinPool getPool()
        Returns the pool hosting this thread.
        Returns:
        the pool
      • getPoolIndex

        public int getPoolIndex()
        Returns the index number of this thread in its pool. The returned value ranges from zero to the maximum number of threads (minus one) that have ever been created in the pool. This method may be useful for applications that track status or collect results per-worker rather than per-task.
        Returns:
        the index number
      • onStart

        protected void onStart()
        Initializes internal state after construction but before processing any tasks. If you override this method, you must invoke super.onStart() at the beginning of the method. Initialization requires care: Most fields must have legal default values, to ensure that attempted accesses from other threads work correctly even before this thread starts processing tasks.
      • onTermination

        protected void onTermination​(java.lang.Throwable exception)
        Performs cleanup associated with termination of this worker thread. If you override this method, you must invoke super.onTermination at the end of the overridden method.
        Parameters:
        exception - the exception causing this thread to abort due to an unrecoverable error, or null if completed normally
      • run

        public void run()
        This method is required to be public, but should never be called explicitly. It performs the main run loop to execute ForkJoinTasks.
        Specified by:
        run in interface java.lang.Runnable
        Overrides:
        run in class java.lang.Thread