Class ParallelExecutionStrategy

    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      void wait​(java.util.concurrent.Future<?> future)
      While waiting for a Future to be completed, steal work from any running tasks and run it.
      • Methods inherited from class java.lang.Object

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

      • ParallelExecutionStrategy

        public ParallelExecutionStrategy()
    • Method Detail

      • wait

        public void wait​(java.util.concurrent.Future<?> future)
        Description copied from interface: ExecutionStrategy
        While waiting for a Future to be completed, steal work from any running tasks and run it.

        While this method may functionally appear to be equivalent to just calling future.get() it should try its best to steal work from any other tasks submitted to the ExecutorService of the current ApfloatContext. It may in fact steal work using multiple threads, if the current ApfloatContext specifies numberOfProcessors to be more than one.

        The purpose of this method is to allow keeping all threads of the ExecutorService (and CPU cores) maximally busy at all times, while also not running an excessive number of parallel threads (only as many threads as there are CPU cores).

        Specified by:
        wait in interface ExecutionStrategy
        Parameters:
        future - The Future to wait for.