Class LocalTaskQueue<T>
- java.lang.Object
- 
- org.apache.sysds.runtime.controlprogram.parfor.LocalTaskQueue<T>
 
- 
 public class LocalTaskQueue<T> extends Object This class provides a way of dynamic task distribution to multiple workers in local multi-threaded environments. Its main purpose is inter-thread communication for achieving dynamic load balancing. A good load balance between parallel workers is crucial with regard to the overall speedup of parallelization (see Amdahl's law). From a technical perspective, a thread monitor concept is used for blocking of waiting writers and readers. Synchronized writes and reads ensure that each task is only read by exactly one reader. Furthermore, the queue is implemented as a simple FIFO.
- 
- 
Field SummaryFields Modifier and Type Field Description static intMAX_SIZEstatic ObjectNO_MORE_TASKS
 - 
Constructor SummaryConstructors Constructor Description LocalTaskQueue()
 - 
Method SummaryAll Methods Instance Methods Concrete Methods Modifier and Type Method Description voidcloseInput()Synchronized (logical) insert of a NO_MORE_TASKS symbol at the end of the FIFO queue in order to mark that no more tasks will be inserted into the queue.TdequeueTask()Synchronized read and delete from the top of the FIFO queue.voidenqueueTask(T t)Synchronized insert of a new task to the end of the FIFO queue.StringtoString()
 
- 
- 
- 
Field Detail- 
MAX_SIZEpublic static final int MAX_SIZE - See Also:
- Constant Field Values
 
 - 
NO_MORE_TASKSpublic static final Object NO_MORE_TASKS 
 
- 
 - 
Method Detail- 
enqueueTaskpublic void enqueueTask(T t) throws InterruptedException Synchronized insert of a new task to the end of the FIFO queue.- Parameters:
- t- task
- Throws:
- InterruptedException- if InterruptedException occurs
 
 - 
dequeueTaskpublic T dequeueTask() throws InterruptedException Synchronized read and delete from the top of the FIFO queue.- Returns:
- task
- Throws:
- InterruptedException- if InterruptedException occurs
 
 - 
closeInputpublic void closeInput() Synchronized (logical) insert of a NO_MORE_TASKS symbol at the end of the FIFO queue in order to mark that no more tasks will be inserted into the queue.
 
- 
 
-