public class GraphThreadPoolExecutor<T> extends java.util.concurrent.ThreadPoolExecutor implements ITestNGThreadPoolExecutor
DynamicGraph
of tasks to be run
and a IThreadWorkerFactory
to initialize/create Runnable
wrappers around those
tasksModifier and Type | Class and Description |
---|---|
private class |
GraphThreadPoolExecutor.PhoneyWorker |
java.util.concurrent.ThreadPoolExecutor.AbortPolicy, java.util.concurrent.ThreadPoolExecutor.CallerRunsPolicy, java.util.concurrent.ThreadPoolExecutor.DiscardOldestPolicy, java.util.concurrent.ThreadPoolExecutor.DiscardPolicy
Modifier and Type | Field and Description |
---|---|
private java.util.Comparator<T> |
m_comparator |
private IThreadWorkerFactory<T> |
m_factory |
private IDynamicGraph<T> |
m_graph |
private java.util.Map<T,IWorker<T>> |
mapping |
private java.util.Map<T,T> |
upstream |
Constructor and 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) |
Modifier and Type | Method and Description |
---|---|
void |
afterExecute(java.lang.Runnable r,
java.lang.Throwable t) |
private IDynamicGraph.Status |
computeStatus(java.lang.Runnable r) |
private void |
handleThreadAffinity(java.util.List<T> freeNodes) |
private void |
mapNodeToParent(java.util.List<T> freeNodes) |
private void |
mapNodeToWorker(java.util.List<IWorker<T>> runnables,
java.util.List<T> freeNodes) |
void |
run()
Helps kick start the execution and is the point of entry for execution.
|
private void |
runNodes(java.util.List<T> freeNodes)
Create one worker per node and execute them.
|
private void |
setStatus(IWorker<T> worker,
IDynamicGraph.Status status) |
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
invokeAll, invokeAll, invokeAny, invokeAny, newTaskFor, newTaskFor, submit, submit, submit
clone, equals, getClass, hashCode, notify, notifyAll, wait, wait, wait
private final IDynamicGraph<T> m_graph
private final IThreadWorkerFactory<T> m_factory
private final java.util.Comparator<T> m_comparator
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)
public void run()
ITestNGThreadPoolExecutor
run
in interface ITestNGThreadPoolExecutor
private void runNodes(java.util.List<T> freeNodes)
public void afterExecute(java.lang.Runnable r, java.lang.Throwable t)
afterExecute
in class java.util.concurrent.ThreadPoolExecutor
private void setStatus(IWorker<T> worker, IDynamicGraph.Status status)
private IDynamicGraph.Status computeStatus(java.lang.Runnable r)
private void mapNodeToWorker(java.util.List<IWorker<T>> runnables, java.util.List<T> freeNodes)
private void mapNodeToParent(java.util.List<T> freeNodes)
private void handleThreadAffinity(java.util.List<T> freeNodes)