Class Rendezvous


  • public class Rendezvous
    extends java.lang.Object
    class used to manage rule rendezvous operations
    • Nested Class Summary

      Nested Classes 
      Modifier and Type Class Description
      class  Rendezvous.Counter
      class encapsulating state for a specific rendezvous
    • Field Summary

      Fields 
      Modifier and Type Field Description
      private Rendezvous.Counter counter
      the current counter for this rendezvous
      private int expected
      the number of threads which are expected to arrive at this rendezvous
      private boolean isDeleted
      true if a rendezvous was deleted while a rendezbvous was in progress but had not completed
      private boolean needsRemove
      true if a non-restartable rendezvous has completed and has not been removed from the rendezvous map
      private boolean rejoinable
      true if this rendezvous can be repeatedly joined, false it it is a one-off meeting
    • Constructor Summary

      Constructors 
      Constructor Description
      Rendezvous​(int expected)  
      Rendezvous​(int expected, boolean rejoinable)  
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      boolean delete()
      delete this rendezvous causing any waiting threads to return -1 form the rendezvous call.
      int getArrived()
      retrieve the number of threads waiting at the rendezvous or -1 if the rendezvous has been deleted
      int getExpected()  
      boolean needsRemove()
      check if the rendezvous has completed but has not yet been removed
      int rendezvous​(long millis)
      enter this rendezvous.
      void setRemoved()
      mark a completed rendezvous to indicate that it has been removed
      • Methods inherited from class java.lang.Object

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

      • expected

        private int expected
        the number of threads which are expected to arrive at this rendezvous
      • rejoinable

        private boolean rejoinable
        true if this rendezvous can be repeatedly joined, false it it is a one-off meeting
      • isDeleted

        private boolean isDeleted
        true if a rendezvous was deleted while a rendezbvous was in progress but had not completed
      • needsRemove

        private boolean needsRemove
        true if a non-restartable rendezvous has completed and has not been removed from the rendezvous map
    • Constructor Detail

      • Rendezvous

        public Rendezvous​(int expected)
      • Rendezvous

        public Rendezvous​(int expected,
                          boolean rejoinable)
    • Method Detail

      • rendezvous

        public int rendezvous​(long millis)
        enter this rendezvous. n.b. this must be called synchronized on the rendezvous object in question
        Parameters:
        millis - how long to wait (wait forever if 0)
        Returns:
        the index in arrival order from 0 to expected of the calling thread or -1 if either the rendezvous has completed and is not restartable or the rendezvous has been deleted
      • delete

        public boolean delete()
        delete this rendezvous causing any waiting threads to return -1 form the rendezvous call. n.b. this must be called synchronized on the rendezvous object in question
        Returns:
        false if a delete has already been requested otherwise true
      • getExpected

        public int getExpected()
      • getArrived

        public int getArrived()
        retrieve the number of threads waiting at the rendezvous or -1 if the rendezvous has been deleted
        Returns:
        number of threads waiting or -1
      • needsRemove

        public boolean needsRemove()
        check if the rendezvous has completed but has not yet been removed
        Returns:
        the above
      • setRemoved

        public void setRemoved()
        mark a completed rendezvous to indicate that it has been removed