Class Actor<A>


  • public final class Actor<A>
    extends java.lang.Object
    Light weight actors for Java. Concurrency is controlled by a parallel Strategy. The Strategy serves as the Actor's execution engine, and as its mailbox.

    Given some effect, the Actor performs the effect on its messages using its Strategy, transforming them into instances of fj.P1. The P1 represents a possibly running computation which is executing the effect.

    NOTE: A value of this type may generally process more than one message at a time, depending on its Strategy. An actor is not thread-safe unless either its Effect imposes an order on incoming messages or its Strategy is single-threaded. A queue actor which imposes an order on its messages is provided by the queueActor(fj.control.parallel.Strategy<fj.Unit>, fj.function.Effect1<T>) static method.

    • Field Summary

      Fields 
      Modifier and Type Field Description
      private F<A,​P1<Unit>> f  
      private Strategy<Unit> s  
    • Method Summary

      All Methods Static Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      P1<Unit> act​(A a)
      Pass a message to this actor, applying its side-effect to the message.
      static <A> Actor<A> actor​(Strategy<Unit> s, F<A,​P1<Unit>> e)
      Creates a new Actor that uses the given parallelization strategy and has the given side-effect.
      static <A> Actor<A> actor​(Strategy<Unit> s, Effect1<A> e)
      Creates a new Actor that uses the given parallelization strategy and has the given side-effect.
      <B> Actor<B> contramap​(F<B,​A> f)
      Contravariant functor pattern.
      Actor<Promise<A>> promise()
      Transforms this actor to an actor on promises.
      static <T> Actor<T> queueActor​(Strategy<Unit> s, Effect1<T> ea)
      An Actor equipped with a queue and which is guaranteed to process one message at a time.
      • Methods inherited from class java.lang.Object

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

      • queueActor

        public static <T> Actor<T> queueActor​(Strategy<Unit> s,
                                              Effect1<T> ea)
        An Actor equipped with a queue and which is guaranteed to process one message at a time. With respect to an enqueueing actor or thread, this actor will process messages in the same order as they are sent.
      • actor

        public static <A> Actor<A> actor​(Strategy<Unit> s,
                                         Effect1<A> e)
        Creates a new Actor that uses the given parallelization strategy and has the given side-effect.
        Parameters:
        s - The parallelization strategy to use for the new Actor.
        e - The side-effect to apply to messages passed to the Actor.
        Returns:
        A new actor that uses the given parallelization strategy and has the given side-effect.
      • actor

        public static <A> Actor<A> actor​(Strategy<Unit> s,
                                         F<A,​P1<Unit>> e)
        Creates a new Actor that uses the given parallelization strategy and has the given side-effect.
        Parameters:
        s - The parallelization strategy to use for the new Actor.
        e - The function projection of a side-effect to apply to messages passed to the Actor.
        Returns:
        A new actor that uses the given parallelization strategy and has the given side-effect.
      • act

        public P1<Unit> act​(A a)
        Pass a message to this actor, applying its side-effect to the message. The side-effect is applied in a concurrent computation, resulting in a product referencing that computation.
        Parameters:
        a - The message to send to this actor.
        Returns:
        A unit-product that represents the action running concurrently.
      • contramap

        public <B> Actor<B> contramap​(F<B,​A> f)
        Contravariant functor pattern. Creates a new actor whose message is transformed by the given function before being passed to this actor.
        Parameters:
        f - The function to use for the transformation
        Returns:
        A new actor which passes its messages through the given function, to this actor.
      • promise

        public Actor<Promise<A>> promise()
        Transforms this actor to an actor on promises.
        Returns:
        A new actor, equivalent to this actor, that acts on promises.