Class Task<V>

  • Type Parameters:
    V - The type of the value returned by the operation. May be Void to indicate that the task does not return a value.
    Direct Known Subclasses:
    IOTask, TaskGroup, TaskSequence

    public abstract class Task<V>
    extends java.lang.Object
    Abstract base class for "tasks". A task is an asynchronous operation that may optionally return a value.
    • Field Summary

      Fields 
      Modifier and Type Field Description
      protected boolean abort  
      static java.util.concurrent.ExecutorService DEFAULT_EXECUTOR_SERVICE  
      protected long timeout  
    • Constructor Summary

      Constructors 
      Constructor Description
      Task()  
      Task​(java.util.concurrent.ExecutorService executorService)  
    • Method Summary

      All Methods Instance Methods Abstract Methods Concrete Methods 
      Modifier and Type Method Description
      void abort()
      Sets the abort flag for this task to true.
      abstract V execute()
      Synchronously executes the task.
      void execute​(TaskListener<V> taskListenerArgument)
      Asynchronously executes the task.
      void execute​(TaskListener<V> taskListenerArgument, java.util.concurrent.ExecutorService executorServiceArgument)
      Asynchronously executes the task.
      java.lang.Thread getBackgroundThread()
      Returns the thread that was used to execute this task in the background.
      java.util.concurrent.ExecutorService getExecutorService()  
      java.lang.Throwable getFault()
      Returns the fault that occurred while executing the task.
      V getResult()
      Returns the result of executing the task.
      long getTimeout()
      Return the timeout value for this task.
      boolean isPending()
      Returns the pending state of the task.
      void setTimeout​(long timeout)
      Sets the timeout value for this task.
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Field Detail

      • timeout

        protected volatile long timeout
      • abort

        protected volatile boolean abort
      • DEFAULT_EXECUTOR_SERVICE

        public static final java.util.concurrent.ExecutorService DEFAULT_EXECUTOR_SERVICE
    • Constructor Detail

      • Task

        public Task()
      • Task

        public Task​(java.util.concurrent.ExecutorService executorService)
    • Method Detail

      • execute

        public abstract V execute()
                           throws TaskExecutionException
        Synchronously executes the task.
        Returns:
        The result of the task's execution.
        Throws:
        TaskExecutionException - If an error occurs while executing the task.
      • execute

        public void execute​(TaskListener<V> taskListenerArgument)
        Asynchronously executes the task. The caller is notified of the task's completion via the listener argument. Note that the listener will be notified on the task's worker thread, not on the thread that executed the task.
        Parameters:
        taskListenerArgument - The listener to be notified when the task completes.
      • execute

        public void execute​(TaskListener<V> taskListenerArgument,
                            java.util.concurrent.ExecutorService executorServiceArgument)
        Asynchronously executes the task. The caller is notified of the task's completion via the listener argument. Note that the listener will be notified on the task's worker thread, not on the thread that executed the task.
        Parameters:
        taskListenerArgument - The listener to be notified when the task completes.
        executorServiceArgument - The service to submit the task to, overriding the Task's own ExecutorService.
      • getExecutorService

        public java.util.concurrent.ExecutorService getExecutorService()
        Returns:
        The executor service used to execute this task.
      • getResult

        public V getResult()
        Returns the result of executing the task.
        Returns:
        The task result, or null if the task is still executing or has failed. The result itself may also be null; callers should call isPending() and getFault() to distinguish between these cases.
      • getFault

        public java.lang.Throwable getFault()
        Returns the fault that occurred while executing the task.
        Returns:
        The task fault, or null if the task is still executing or has succeeded. Callers should call isPending() to distinguish between these cases.
      • getBackgroundThread

        public java.lang.Thread getBackgroundThread()
        Returns the thread that was used to execute this task in the background.
        Returns:
        The background thread or null if the weak reference was already cleared or if the thread hasn't started yet.
      • isPending

        public boolean isPending()
        Returns the pending state of the task.
        Returns:
        true if the task is awaiting execution or currently executing; false, otherwise.
      • getTimeout

        public long getTimeout()
        Return the timeout value for this task.
        Returns:
        The timeout value.
        See Also:
        setTimeout(long)
      • setTimeout

        public void setTimeout​(long timeout)
        Sets the timeout value for this task. It is the responsibility of the implementing class to respect this value.
        Parameters:
        timeout - The time by which the task must complete execution. If the timeout is exceeded, a TimeoutException will be thrown.
      • abort

        public void abort()
        Sets the abort flag for this task to true. It is the responsibility of the implementing class to respect this value and throw a AbortException.