Class Event<T extends Throwable>

java.lang.Object
net.schmizz.concurrent.Event<T>

public class Event<T extends Throwable> extends Object
An event can be set, cleared, or awaited, similar to Python's threading.event. The key difference is that a waiter may be delivered an exception of parameterized type T.

Uses Promise under the hood.

  • Field Details

  • Constructor Details

    • Event

      public Event(String name, ExceptionChainer<T> chainer, LoggerFactory loggerFactory)
      Creates this event with given name and exception chainer. Allocates a new Lock object for this event.
      Parameters:
      name - name of this event
      chainer - ExceptionChainer that will be used for chaining exceptions
    • Event

      public Event(String name, ExceptionChainer<T> chainer, ReentrantLock lock, LoggerFactory loggerFactory)
      Creates this event with given name, exception chainer, and associated lock.
      Parameters:
      name - name of this event
      chainer - ExceptionChainer that will be used for chaining exceptions
      lock - lock to use
  • Method Details

    • set

      public void set()
      Sets this event to be true. Short for set(true).
    • clear

      public void clear()
      Clear this event. A cleared event !isSet().
    • deliverError

      public void deliverError(Throwable t)
      Deliver the error t (after chaining) to any present or future waiters.
    • isSet

      public boolean isSet()
      Returns:
      whether this event is in a 'set' state. An event is set by a call to set() or deliverError(java.lang.Throwable)
    • await

      public void await() throws T
      Await this event to have a definite true or false value.
      Throws:
      T - if another thread meanwhile informs this event of an error
    • await

      public void await(long timeout, TimeUnit unit) throws T
      Await this event to have a definite true or false value, for timeout duration.
      Parameters:
      timeout - timeout
      unit - the time unit for the timeout
      Throws:
      T - if another thread meanwhile informs this event of an error, or timeout expires
    • tryAwait

      public boolean tryAwait(long timeout, TimeUnit unit) throws T
      Await this event to have a definite true or false value, for timeout duration.

      If the definite value is not available when the timeout expires, returns false.

      Parameters:
      timeout - timeout
      unit - the time unit for the timeout
      Throws:
      T - if another thread meanwhile informs this event of an error
    • hasWaiters

      public boolean hasWaiters()
      Returns:
      whether there are any threads waiting on this event to be set.
    • inError

      public boolean inError()
      Returns:
      whether this event is in an error state i.e. has been delivered an error.
    • lock

      public void lock()
      Acquire the lock associated with this event.
    • unlock

      public void unlock()
      Release the lock associated with this event.
    • toString

      public String toString()
      Overrides:
      toString in class Object