Class LimitedPipelineExecutor<O>
java.lang.Object
java.util.concurrent.AbstractExecutorService
java.util.concurrent.ThreadPoolExecutor
de.aristaflow.adept2.util.threading.AFThreadPoolExecutor
de.aristaflow.adept2.util.threading.CachedThreadPoolExecutor
de.aristaflow.adept2.util.threading.executor.AbstractObjectSpecificExecutor<O,P,Queue<Runnable>>
de.aristaflow.adept2.util.threading.executor.AbstractPipeliningExecutor<O,Integer>
de.aristaflow.adept2.util.threading.executor.LimitedPipelineExecutor<O>
- Type Parameters:
O- The type of object for which work is registered and which identifies a pipeline.
- All Implemented Interfaces:
Executor,ExecutorService
A pipeline executor that has an upper limit for the amount of pipelines.
Several different objects will be executed by the same pipeline.
-
Nested Class Summary
Nested classes/interfaces inherited from class java.util.concurrent.ThreadPoolExecutor
ThreadPoolExecutor.AbortPolicy, ThreadPoolExecutor.CallerRunsPolicy, ThreadPoolExecutor.DiscardOldestPolicy, ThreadPoolExecutor.DiscardPolicy -
Field Summary
FieldsFields inherited from class de.aristaflow.adept2.util.threading.executor.AbstractObjectSpecificExecutor
abortCount, flushPending, logger, objects, shutdownPendingFields inherited from class de.aristaflow.adept2.util.threading.CachedThreadPoolExecutor
fullSize, realCoreSize, realMaxSize, workSizeFields inherited from class de.aristaflow.adept2.util.threading.AFThreadPoolExecutor
activeThreads, completedTasks, HYSTERESIS, submittedTasks -
Constructor Summary
ConstructorsConstructorDescriptionLimitedPipelineExecutor(int limit, Adept2ThreadFactory threadFactory) Creates a new thread pool executor with the designated amount of pipelines and threads. -
Method Summary
Modifier and TypeMethodDescriptionprotected IntegergetIndexObjectFor(O object) Gets the object used for managing and executing runnables within this executor.Methods inherited from class de.aristaflow.adept2.util.threading.executor.AbstractPipeliningExecutor
addRunnable, cancelAndFlush, clearAbortedPendingWork, createPipelineRunnable, executeShutdown, getOutstandingRunnablesMethods inherited from class de.aristaflow.adept2.util.threading.executor.AbstractObjectSpecificExecutor
execute, flushAndExecute, flushAndExecuteUnchecked, isShutdown, restart, restartPendingWork, shutdown, shutdownNow, shutdownRunnableRun, submit, submit, submitAndFlushMethods inherited from class de.aristaflow.adept2.util.threading.CachedThreadPoolExecutor
afterExecute, executeMethods inherited from class de.aristaflow.adept2.util.threading.AFThreadPoolExecutor
beforeExecute, logPoolStatistics, newTaskFor, newTaskFor, recalculateLogLimits, setCorePoolSize, setLogExecuteCallStack, setMaximumPoolSize, updateQueueLimitMethods inherited from class java.util.concurrent.ThreadPoolExecutor
allowCoreThreadTimeOut, allowsCoreThreadTimeOut, awaitTermination, finalize, getActiveCount, getCompletedTaskCount, getCorePoolSize, getKeepAliveTime, getLargestPoolSize, getMaximumPoolSize, getPoolSize, getQueue, getRejectedExecutionHandler, getTaskCount, getThreadFactory, isTerminated, isTerminating, prestartAllCoreThreads, prestartCoreThread, purge, remove, setKeepAliveTime, setRejectedExecutionHandler, setThreadFactory, terminated, toString
-
Field Details
-
limit
protected final int limitThe maximum amount of pipelines.
-
-
Constructor Details
-
LimitedPipelineExecutor
Creates a new thread pool executor with the designated amount of pipelines and threads. The threads will stay idle for 60 seconds before they terminate.- Parameters:
limit- The maximum number of threads allowed in the pool and also the maximum number of pipelines.threadFactory- The factory to use when the executor creates a new thread.
-
-
Method Details
-
getIndexObjectFor
Gets the object used for managing and executing runnables within this executor. Returns the hashcode of the designated object modulo the limit.- Specified by:
getIndexObjectForin classAbstractObjectSpecificExecutor<O,Integer, Queue<Runnable>> - Parameters:
object- The object for which a runnable is registered.- Returns:
- The object used for managing and executing runnables (registered for the designated object) within this executor.
-