Class ParallelRunner


  • public class ParallelRunner
    extends Object
    Class for running ParallelRunnable objects in parallel using multiple threads.

    The ParallelRunner assumes that the current ApfloatContext returns an ExecutorService that is limited to a number of threads that is one less than the number of processors. This way, when also the current thread runs batches from the ParallelRunnable, CPU utilization should be maximized but only so that no more threads are actively executing than the number of processors.

    Since:
    1.1
    Version:
    1.9.0
    Author:
    Mikko Tommila
    • Method Detail

      • runParallel

        public static void runParallel​(ParallelRunnable parallelRunnable)
                                throws ApfloatRuntimeException
        Run a ParallelRunnable object in parallel using multiple threads. The method assumes that the ExecutorService returned from ApfloatContext.getExecutorService() is limited to using one thread less than the number of processors. This maximizes CPU usage, When the ParallelRunnable is also run from the current thread.
        Parameters:
        parallelRunnable - The ParallelRunnable to be run.
        Throws:
        ApfloatRuntimeException
      • wait

        public static void wait​(Future<?> future)
        While waiting for a Future to be completed, steal a minimal amount of work from any running task and run it.
        Parameters:
        future - The Future to wait for.