package org.testng.thread;

import java.util.List;

A runnable object that is used by GraphThreadPoolExecutor to execute tasks
/** A runnable object that is used by {@code GraphThreadPoolExecutor} to execute tasks */
public interface IWorker<T> extends Runnable, Comparable<IWorker<T>> {
Returns:list of tasks this worker is working on.
/** @return list of tasks this worker is working on. */
List<T> getTasks();
Returns:the maximum time allowed for the worker to complete the task.
/** @return the maximum time allowed for the worker to complete the task. */
long getTimeOut();
Returns:the priority of this task.
/** @return the priority of this task. */
int getPriority(); default long getCurrentThreadId() { return -1; } default void setThreadIdToRunOn(long threadIdToRunOn) {} default long getThreadIdToRunOn() { return -1; } default boolean completed() { return true; } }