Class ForkJoinExecutorService
- java.lang.Object
-
- java.util.concurrent.AbstractExecutorService
-
- net.imglib2.parallel.ForkJoinExecutorService
-
- All Implemented Interfaces:
java.util.concurrent.Executor,java.util.concurrent.ExecutorService
public class ForkJoinExecutorService extends java.util.concurrent.AbstractExecutorServiceTheForkJoinExecutorServiceis anExecutorService, for efficient nested parallelization.The
ForkJoinPoolis an ExecutorService that provides an entry point to a technique called work-steeling. Work-steeling allows good performance for nested parallelization. But callingForkJoinPool.submit(java.util.concurrent.ForkJoinTask<T>)orForkJoinPool.invokeAll(java.util.Collection<? extends java.util.concurrent.Callable<T>>)alone, won't result in any work-steeling and performance boost. It's necessary to useForkJoinTasks and their methodsforkorinvokeAllto benefit from work-steeling.ForkJoinExecutorService is an ExecutorService that internally calls ForkJoinTask.fork() and ForkJoinTask.invokeAll(...) and therefore directly achieves good performance by work-steeling.
ForkJoinExecutorService is not a fully functional ExecutorService. Methods like
shutdownNow(),awaitTermination(long, TimeUnit)andinvokeAll(Collection, long, TimeUnit)are not implemented.
-
-
Constructor Summary
Constructors Constructor Description ForkJoinExecutorService()
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description booleanawaitTermination(long l, java.util.concurrent.TimeUnit timeUnit)voidexecute(java.lang.Runnable runnable)intgetParallelism()private java.util.concurrent.ForkJoinPoolgetPool()<T> java.util.List<java.util.concurrent.Future<T>>invokeAll(java.util.Collection<? extends java.util.concurrent.Callable<T>> collection)<T> java.util.List<java.util.concurrent.Future<T>>invokeAll(java.util.Collection<? extends java.util.concurrent.Callable<T>> collection, long l, java.util.concurrent.TimeUnit timeUnit)booleanisShutdown()booleanisTerminated()voidshutdown()java.util.List<java.lang.Runnable>shutdownNow()java.util.concurrent.Future<?>submit(java.lang.Runnable runnable)<T> java.util.concurrent.Future<T>submit(java.lang.Runnable runnable, T t)<T> java.util.concurrent.Future<T>submit(java.util.concurrent.Callable<T> callable)
-
-
-
Method Detail
-
getParallelism
public int getParallelism()
-
shutdown
public void shutdown()
-
shutdownNow
public java.util.List<java.lang.Runnable> shutdownNow()
-
isShutdown
public boolean isShutdown()
-
isTerminated
public boolean isTerminated()
-
awaitTermination
public boolean awaitTermination(long l, java.util.concurrent.TimeUnit timeUnit) throws java.lang.InterruptedException- Throws:
java.lang.InterruptedException
-
invokeAll
public <T> java.util.List<java.util.concurrent.Future<T>> invokeAll(java.util.Collection<? extends java.util.concurrent.Callable<T>> collection) throws java.lang.InterruptedException- Specified by:
invokeAllin interfacejava.util.concurrent.ExecutorService- Overrides:
invokeAllin classjava.util.concurrent.AbstractExecutorService- Throws:
java.lang.InterruptedException
-
invokeAll
public <T> java.util.List<java.util.concurrent.Future<T>> invokeAll(java.util.Collection<? extends java.util.concurrent.Callable<T>> collection, long l, java.util.concurrent.TimeUnit timeUnit) throws java.lang.InterruptedException- Specified by:
invokeAllin interfacejava.util.concurrent.ExecutorService- Overrides:
invokeAllin classjava.util.concurrent.AbstractExecutorService- Throws:
java.lang.InterruptedException
-
submit
public java.util.concurrent.Future<?> submit(java.lang.Runnable runnable)
- Specified by:
submitin interfacejava.util.concurrent.ExecutorService- Overrides:
submitin classjava.util.concurrent.AbstractExecutorService
-
submit
public <T> java.util.concurrent.Future<T> submit(java.lang.Runnable runnable, T t)- Specified by:
submitin interfacejava.util.concurrent.ExecutorService- Overrides:
submitin classjava.util.concurrent.AbstractExecutorService
-
submit
public <T> java.util.concurrent.Future<T> submit(java.util.concurrent.Callable<T> callable)
- Specified by:
submitin interfacejava.util.concurrent.ExecutorService- Overrides:
submitin classjava.util.concurrent.AbstractExecutorService
-
execute
public void execute(java.lang.Runnable runnable)
-
getPool
private java.util.concurrent.ForkJoinPool getPool()
-
-