Class ReentrantCircuit

java.lang.Object
net.jodah.concurrentunit.internal.ReentrantCircuit

public class ReentrantCircuit extends Object
A circuit that accepts re-entrant open() and close() calls, allows waiting threads to be interrupted, and ensures fairness when releasing waiting threads.
Author:
Jonathan Halterman
  • Nested Class Summary

    Nested Classes
    Modifier and Type
    Class
    Description
    (package private) static final class 
    Synchronization state of 0 = closed, 1 = open.
  • Constructor Summary

    Constructors
    Constructor
    Description
     
  • Method Summary

    Modifier and Type
    Method
    Description
    void
    Waits for the circuit to be closed, aborting if interrupted.
    boolean
    await(long waitDuration, TimeUnit timeUnit)
    Waits for the waitDuration until the circuit has been closed, aborting if interrupted, returning true if the circuit is closed else false.
    void
    Closes the circuit, releasing any waiting threads.
    void
    Interrupts waiting threads.
    boolean
    Returns whether the circuit is closed.
    void
    Opens the circuit.

    Methods inherited from class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
  • Constructor Details

    • ReentrantCircuit

      public ReentrantCircuit()
  • Method Details

    • await

      public void await() throws InterruptedException
      Waits for the circuit to be closed, aborting if interrupted.
      Throws:
      InterruptedException - when wait is interrupted
    • await

      public boolean await(long waitDuration, TimeUnit timeUnit) throws InterruptedException
      Waits for the waitDuration until the circuit has been closed, aborting if interrupted, returning true if the circuit is closed else false.
      Parameters:
      waitDuration - the maximum time
      timeUnit - the unit of the time
      Returns:
      true if acquired; false if timed out
      Throws:
      InterruptedException - when wait is interrupted
    • close

      public void close()
      Closes the circuit, releasing any waiting threads.
    • interruptWaiters

      public void interruptWaiters()
      Interrupts waiting threads.
    • isClosed

      public boolean isClosed()
      Returns whether the circuit is closed.
      Returns:
      boolean; whether the circuit is closed.
    • open

      public void open()
      Opens the circuit.
    • toString

      public String toString()
      Overrides:
      toString in class Object