Package org.testng.internal.thread.graph
Class GraphThreadPoolExecutor<T>
- java.lang.Object
-
- java.util.concurrent.AbstractExecutorService
-
- java.util.concurrent.ThreadPoolExecutor
-
- org.testng.internal.thread.graph.GraphThreadPoolExecutor<T>
-
- All Implemented Interfaces:
java.util.concurrent.Executor,java.util.concurrent.ExecutorService,ITestNGThreadPoolExecutor
public class GraphThreadPoolExecutor<T> extends java.util.concurrent.ThreadPoolExecutor implements ITestNGThreadPoolExecutor
An Executor that launches tasks per batches. It takes aDynamicGraphof tasks to be run and aIThreadWorkerFactoryto initialize/createRunnablewrappers around those tasks
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description private classGraphThreadPoolExecutor.PhoneyWorker-
Nested classes/interfaces inherited from class java.util.concurrent.ThreadPoolExecutor
java.util.concurrent.ThreadPoolExecutor.AbortPolicy, java.util.concurrent.ThreadPoolExecutor.CallerRunsPolicy, java.util.concurrent.ThreadPoolExecutor.DiscardOldestPolicy, java.util.concurrent.ThreadPoolExecutor.DiscardPolicy
-
-
Field Summary
Fields Modifier and Type Field Description private java.util.Comparator<T>m_comparatorprivate IThreadWorkerFactory<T>m_factoryprivate IDynamicGraph<T>m_graphprivate java.util.Map<T,IWorker<T>>mappingprivate java.util.Map<T,T>upstream
-
Constructor Summary
Constructors Constructor Description GraphThreadPoolExecutor(java.lang.String name, IDynamicGraph<T> graph, IThreadWorkerFactory<T> factory, int corePoolSize, int maximumPoolSize, long keepAliveTime, java.util.concurrent.TimeUnit unit, java.util.concurrent.BlockingQueue<java.lang.Runnable> workQueue, java.util.Comparator<T> comparator)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description voidafterExecute(java.lang.Runnable r, java.lang.Throwable t)private IDynamicGraph.StatuscomputeStatus(java.lang.Runnable r)private voidhandleThreadAffinity(java.util.List<T> freeNodes)private voidmapNodeToParent(java.util.List<T> freeNodes)private voidmapNodeToWorker(java.util.List<IWorker<T>> runnables, java.util.List<T> freeNodes)voidrun()Helps kick start the execution and is the point of entry for execution.private voidrunNodes(java.util.List<T> freeNodes)Create one worker per node and execute them.private voidsetStatus(IWorker<T> worker, IDynamicGraph.Status status)-
Methods inherited from class java.util.concurrent.ThreadPoolExecutor
allowCoreThreadTimeOut, allowsCoreThreadTimeOut, awaitTermination, beforeExecute, execute, finalize, getActiveCount, getCompletedTaskCount, getCorePoolSize, getKeepAliveTime, getLargestPoolSize, getMaximumPoolSize, getPoolSize, getQueue, getRejectedExecutionHandler, getTaskCount, getThreadFactory, isShutdown, isTerminated, isTerminating, prestartAllCoreThreads, prestartCoreThread, purge, remove, setCorePoolSize, setKeepAliveTime, setMaximumPoolSize, setRejectedExecutionHandler, setThreadFactory, shutdown, shutdownNow, terminated, toString
-
Methods inherited from class java.util.concurrent.AbstractExecutorService
invokeAll, invokeAll, invokeAny, invokeAny, newTaskFor, newTaskFor, submit, submit, submit
-
-
-
-
Field Detail
-
m_graph
private final IDynamicGraph<T> m_graph
-
m_factory
private final IThreadWorkerFactory<T> m_factory
-
m_comparator
private final java.util.Comparator<T> m_comparator
-
-
Constructor Detail
-
GraphThreadPoolExecutor
public GraphThreadPoolExecutor(java.lang.String name, IDynamicGraph<T> graph, IThreadWorkerFactory<T> factory, int corePoolSize, int maximumPoolSize, long keepAliveTime, java.util.concurrent.TimeUnit unit, java.util.concurrent.BlockingQueue<java.lang.Runnable> workQueue, java.util.Comparator<T> comparator)
-
-
Method Detail
-
run
public void run()
Description copied from interface:ITestNGThreadPoolExecutorHelps kick start the execution and is the point of entry for execution.- Specified by:
runin interfaceITestNGThreadPoolExecutor
-
runNodes
private void runNodes(java.util.List<T> freeNodes)
Create one worker per node and execute them.
-
afterExecute
public void afterExecute(java.lang.Runnable r, java.lang.Throwable t)- Overrides:
afterExecutein classjava.util.concurrent.ThreadPoolExecutor
-
setStatus
private void setStatus(IWorker<T> worker, IDynamicGraph.Status status)
-
computeStatus
private IDynamicGraph.Status computeStatus(java.lang.Runnable r)
-
mapNodeToWorker
private void mapNodeToWorker(java.util.List<IWorker<T>> runnables, java.util.List<T> freeNodes)
-
mapNodeToParent
private void mapNodeToParent(java.util.List<T> freeNodes)
-
handleThreadAffinity
private void handleThreadAffinity(java.util.List<T> freeNodes)
-
-