Package com.iizix
Class WorkerTask<TASK_ID,PARAM,RESULT>
- java.lang.Object
- com.iizix.WorkerTask<TASK_ID,PARAM,RESULT>
- Type Parameters:
TASK_ID
- The ID parameter type for the task.PARAM
- The parameter type for the task.RESULT
- The result type for the task.
- All Implemented Interfaces:
java.lang.Comparable<java.lang.Object>
public abstract class WorkerTask<TASK_ID,PARAM,RESULT> extends java.lang.Object implements java.lang.Comparable<java.lang.Object>
The WorkerTask is something that requires processing in the Worker queue or some IO operations, etc.- Author:
- Christopher Mindus
Nested Class Summary
Nested Classes Modifier and Type Class Description static class
WorkerTask.State
Task states.
Field Summary
Fields Modifier and Type Field Description long
createTime
The time when the task was created.static int
PRIORITY_DEFAULT
The priority level of the task: default (5).static int
PRIORITY_HIGHEST
The priority level of the task: highest (10).static int
PRIORITY_LOWEST
The priority level of the task: lowest (0).
Constructor Summary
Constructors Constructor Description WorkerTask()
Constructor for the task to perform, no task ID, no parameter, no callback, default priority.WorkerTask(PARAM param)
Constructor for the task to perform, no task ID, no callback, default priority.WorkerTask(TASK_ID id, PARAM param)
Constructor for the task to perform, no callback, default priority.WorkerTask(TASK_ID id, PARAM param, WorkerTaskEnded<TASK_ID,PARAM,RESULT> callback)
Constructor for the task to perform, default priority.WorkerTask(TASK_ID id, PARAM param, WorkerTaskEnded<TASK_ID,PARAM,RESULT> callback, int priority)
Constructor for the task to perform.
Method Summary
All Methods Instance Methods Abstract Methods Concrete Methods Modifier and Type Method Description boolean
cancel(boolean interruptTaskThread)
Cancels the task.int
compareTo(java.lang.Object wt)
Compares the priority level of the specified task with this one.void
execute()
Starts execution of the task.abstract RESULT
execute(TASK_ID id, PARAM param)
Start execution of the task with the implementation specific task ID and parameter.long
getEndTime()
Gets the time in milliseconds (System.currentTimeMillis) when the task ended.java.lang.Throwable
getException()
Gets the exception thrown by the task if it completed with an exception.TASK_ID
getID()
Gets the ID parameter.int
getModalID()
Gets the modal ID when the modality extends beyond this process, e.g.PARAM
getParam()
Gets thePARAM
parameter.RESULT
getResult()
Gets the result of the task if it has completed successfully.long
getStartTime()
Gets the time in milliseconds (System.currentTimeMillis) when the task was started.WorkerTask.State
getState()
Checks the current task state.WorkerNIO
getWorker()
Gets the worker associated with this task.boolean
isCanceled()
Checks if the task is canceled.boolean
isCancelled()
Checks if the task is cancelled.void
setCallback(WorkerTaskEnded<TASK_ID,PARAM,RESULT> callback)
Sets the callback function that is called upon end of the task, called regardless if a result is set for normal completion, or an exception.void
waitForTaskEnded()
Waits for task to end.
Field Detail
PRIORITY_LOWEST
public static final int PRIORITY_LOWEST
The priority level of the task: lowest (0).- See Also:
- Constant Field Values
PRIORITY_DEFAULT
public static final int PRIORITY_DEFAULT
The priority level of the task: default (5).- See Also:
- Constant Field Values
PRIORITY_HIGHEST
public static final int PRIORITY_HIGHEST
The priority level of the task: highest (10).- See Also:
- Constant Field Values
createTime
public final long createTime
The time when the task was created.
Constructor Detail
WorkerTask
public WorkerTask()
Constructor for the task to perform, no task ID, no parameter, no callback, default priority.
WorkerTask
public WorkerTask(PARAM param)
Constructor for the task to perform, no task ID, no callback, default priority.- Parameters:
param
- The implementation specific parameter, or null for none.
WorkerTask
public WorkerTask(TASK_ID id, PARAM param)
Constructor for the task to perform, no callback, default priority.- Parameters:
id
- The implementation specific task ID.param
- The implementation specific parameter, or null for none.
WorkerTask
public WorkerTask(TASK_ID id, PARAM param, WorkerTaskEnded<TASK_ID,PARAM,RESULT> callback)
Constructor for the task to perform, default priority.- Parameters:
id
- The implementation specific task ID.param
- The implementation specific parameter, or null for none.callback
- The callback function to call when task ends or is cancelled, null for none.
WorkerTask
public WorkerTask(TASK_ID id, PARAM param, WorkerTaskEnded<TASK_ID,PARAM,RESULT> callback, int priority)
Constructor for the task to perform.- Parameters:
id
- The implementation specific task ID.param
- The implementation specific parameter, or null for none.callback
- The callback function to call when task ends or is cancelled, null for none.priority
- The priority of the task.
Method Detail
setCallback
public final void setCallback(WorkerTaskEnded<TASK_ID,PARAM,RESULT> callback)
Sets the callback function that is called upon end of the task, called regardless if a result is set for normal completion, or an exception.- Parameters:
callback
- The callback function to call when task ends or is cancelled, null for none.
execute
public final void execute()
Starts execution of the task. This method is called by the invoker of the task, i.e. the Worker.
execute
public abstract RESULT execute(TASK_ID id, PARAM param) throws java.lang.Exception
Start execution of the task with the implementation specific task ID and parameter.- Parameters:
id
- The implementation specific task ID.param
- The implementation specific parameter, or null for none.- Returns:
- The return code.
- Throws:
java.lang.Exception
- If some error occurs during processing of the task.
getModalID
public final int getModalID()
Gets the modal ID when the modality extends beyond this process, e.g. from Server to Client, where Client will reply later to Server.- Returns:
- The modal ID, zero indicates no modality for the task.
getState
public final WorkerTask.State getState()
Checks the current task state.- Returns:
- The state: NOT_STARTED, RUNNING, COMPLETED, EXCEPTION.
getID
public final TASK_ID getID()
Gets the ID parameter.- Returns:
- The
TASK_ID
.
getParam
public final PARAM getParam()
Gets thePARAM
parameter.- Returns:
- The
PARAM
.
getResult
public final RESULT getResult()
Gets the result of the task if it has completed successfully.- Returns:
- The return result from the task, or null if the task has not yet or didn't complete normally.
getException
public final java.lang.Throwable getException()
Gets the exception thrown by the task if it completed with an exception.- Returns:
- The exception thrown by the task, or null if it completed normally or has not yet completed.
isCanceled
public final boolean isCanceled()
Checks if the task is canceled.- Returns:
- true if canceled, false otherwise.
isCancelled
public final boolean isCancelled()
Checks if the task is cancelled.- Returns:
- true if cancelled, false otherwise.
cancel
public boolean cancel(boolean interruptTaskThread)
Cancels the task.- Parameters:
interruptTaskThread
- Flag indicating if the task thread should be interrupted (if running) with call tothread.interrupt();
.- Returns:
- true for success, false for failure.
waitForTaskEnded
public void waitForTaskEnded() throws java.lang.InterruptedException
Waits for task to end. If the task hasn't been started yet, it will wait for it to end or to be cancelled.- Throws:
java.lang.InterruptedException
- If the current thread is interrupted during the waiting.
getStartTime
public long getStartTime()
Gets the time in milliseconds (System.currentTimeMillis) when the task was started.- Returns:
- zero if the has has not yet been started.
getEndTime
public long getEndTime()
Gets the time in milliseconds (System.currentTimeMillis) when the task ended.- Returns:
- zero if the has has not yet ended.
getWorker
public final WorkerNIO getWorker()
Gets the worker associated with this task.- Returns:
- The worker for the task, null if the task has not yet been added to the worker queue.
compareTo
public final int compareTo(java.lang.Object wt)
Compares the priority level of the specified task with this one.- Specified by:
compareTo
in interfacejava.lang.Comparable<TASK_ID>
- Parameters:
wt
- The worker task to compare priority with.- Returns:
- -1, 0 or 1 for the priority level.