Class SafeFutureImpl<R>

  • All Implemented Interfaces:
    java.util.concurrent.Future<R>, Cacheable, GrizzlyFuture<R>, FutureImpl<R>

    public class SafeFutureImpl<R>
    extends java.lang.Object
    implements FutureImpl<R>
    Safe FutureImpl implementation.

    (Based on the JDK FutureTask)

    See Also:
    Future
    • Constructor Summary

      Constructors 
      Constructor Description
      SafeFutureImpl()
      Creates SafeFutureImpl
    • Method Summary

      All Methods Static Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      void addCompletionHandler​(CompletionHandler<R> completionHandler)
      Adds a CompletionHandler, which will be notified once the asynchronous computation, represented by this Future, is complete.
      boolean cancel​(boolean mayInterruptIfRunning)
      static <R> SafeFutureImpl<R> create()
      Construct SafeFutureImpl.
      protected void done()
      Protected method invoked when this task transitions to state isDone (whether normally or via cancellation).
      void failure​(java.lang.Throwable failure)
      Notify about the failure, occurred during asynchronous operation execution.
      R get()  
      R get​(long timeout, java.util.concurrent.TimeUnit unit)  
      R getResult()
      Get current result value without any blocking.
      boolean isCancelled()
      boolean isDone()
      void markForRecycle​(boolean recycleResult)
      Mark GrizzlyFuture as recyclable, so once result will come - GrizzlyFuture object will be recycled and returned to a thread local object pool.
      protected void onComplete()
      The method is called when this SafeFutureImpl is marked as completed.
      void recycle()  
      void recycle​(boolean recycleResult)
      Recycle GrizzlyFuture now.
      void result​(R result)
      Set the result value and notify about operation completion.
      • Methods inherited from class java.lang.Object

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

      • SafeFutureImpl

        public SafeFutureImpl()
        Creates SafeFutureImpl
    • Method Detail

      • result

        public void result​(R result)
        Set the result value and notify about operation completion.
        Specified by:
        result in interface FutureImpl<R>
        Parameters:
        result - the result value
      • failure

        public void failure​(java.lang.Throwable failure)
        Notify about the failure, occurred during asynchronous operation execution.
        Specified by:
        failure in interface FutureImpl<R>
        Parameters:
        failure -
      • markForRecycle

        public void markForRecycle​(boolean recycleResult)
        Description copied from interface: GrizzlyFuture
        Mark GrizzlyFuture as recyclable, so once result will come - GrizzlyFuture object will be recycled and returned to a thread local object pool. You can consider to use this method, if you're not interested in using this GrizzlyFuture object.
        Specified by:
        markForRecycle in interface GrizzlyFuture<R>
        Parameters:
        recycleResult - if true - the GrizzlyFuture result, if it support recyclable mechanism, will be also recycled together with this GrizzlyFuture object.
      • recycle

        public void recycle​(boolean recycleResult)
        Description copied from interface: GrizzlyFuture
        Recycle GrizzlyFuture now. This method could be used, if you're not interested in using this GrizzlyFuture object, and you're sure this object is not used by any other application part.
        Specified by:
        recycle in interface GrizzlyFuture<R>
        Parameters:
        recycleResult - if true - the GrizzlyFuture result, if it support recyclable mechanism, will be also recycled together with this GrizzlyFuture object.
      • recycle

        public void recycle()
        Specified by:
        recycle in interface Cacheable
      • getResult

        public R getResult()
        Description copied from interface: FutureImpl
        Get current result value without any blocking.
        Specified by:
        getResult in interface FutureImpl<R>
        Returns:
        current result value without any blocking.
      • onComplete

        protected void onComplete()
        The method is called when this SafeFutureImpl is marked as completed. Subclasses can override this method.
      • isCancelled

        public boolean isCancelled()
        Specified by:
        isCancelled in interface java.util.concurrent.Future<R>
      • isDone

        public boolean isDone()
        Specified by:
        isDone in interface java.util.concurrent.Future<R>
      • cancel

        public boolean cancel​(boolean mayInterruptIfRunning)
        Specified by:
        cancel in interface java.util.concurrent.Future<R>
      • get

        public R get()
              throws java.lang.InterruptedException,
                     java.util.concurrent.ExecutionException
        Specified by:
        get in interface java.util.concurrent.Future<R>
        Throws:
        java.util.concurrent.CancellationException
        java.lang.InterruptedException
        java.util.concurrent.ExecutionException
      • get

        public R get​(long timeout,
                     java.util.concurrent.TimeUnit unit)
              throws java.lang.InterruptedException,
                     java.util.concurrent.ExecutionException,
                     java.util.concurrent.TimeoutException
        Specified by:
        get in interface java.util.concurrent.Future<R>
        Throws:
        java.util.concurrent.CancellationException
        java.lang.InterruptedException
        java.util.concurrent.ExecutionException
        java.util.concurrent.TimeoutException
      • done

        protected void done()
        Protected method invoked when this task transitions to state isDone (whether normally or via cancellation). The default implementation does nothing. Subclasses may override this method to invoke completion callbacks or perform bookkeeping. Note that you can query status inside the implementation of this method to determine whether this task has been cancelled.