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
tasks| Modifier 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, toStringinvokeAll, invokeAll, invokeAny, invokeAny, newTaskFor, newTaskFor, submit, submit, submitclone, equals, getClass, hashCode, notify, notifyAll, wait, wait, waitprivate 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()
ITestNGThreadPoolExecutorrun in interface ITestNGThreadPoolExecutorprivate void runNodes(java.util.List<T> freeNodes)
public void afterExecute(java.lang.Runnable r,
java.lang.Throwable t)
afterExecute in class java.util.concurrent.ThreadPoolExecutorprivate 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)