Class Slot

  • All Implemented Interfaces:
    BoundedChannel, Channel, Puttable, Takable

    public class Slot
    extends SemaphoreControlledChannel
    A one-slot buffer, using semaphores to control access. Slots are usually more efficient and controllable than using other bounded buffers implementations with capacity of 1.

    Among other applications, Slots can be convenient in token-passing designs: Here. the Slot holds a some object serving as a token, that can be obtained and returned by various threads.

    [ Introduction to this package. ]

    • Constructor Summary

      Constructors 
      Constructor Description
      Slot()
      Create a new Slot using default Semaphore implementations
      Slot​(java.lang.Class semaphoreClass)
      Create a buffer with the given capacity, using the supplied Semaphore class for semaphores.
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      protected java.lang.Object extract()
      Take item known to exist
      protected void insert​(java.lang.Object x)
      Set the item in preparation for a take
      java.lang.Object peek()
      Return, but do not remove object at head of Channel, or null if it is empty.
      • Methods inherited from class java.lang.Object

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

      • item_

        protected java.lang.Object item_
        The slot
    • Constructor Detail

      • Slot

        public Slot​(java.lang.Class semaphoreClass)
             throws java.lang.NoSuchMethodException,
                    java.lang.SecurityException,
                    java.lang.InstantiationException,
                    java.lang.IllegalAccessException,
                    java.lang.reflect.InvocationTargetException
        Create a buffer with the given capacity, using the supplied Semaphore class for semaphores.
        Throws:
        java.lang.NoSuchMethodException - If class does not have constructor that intializes permits
        java.lang.SecurityException - if constructor information not accessible
        java.lang.InstantiationException - if semaphore class is abstract
        java.lang.IllegalAccessException - if constructor cannot be called
        java.lang.reflect.InvocationTargetException - if semaphore constructor throws an exception
      • Slot

        public Slot()
        Create a new Slot using default Semaphore implementations
    • Method Detail

      • peek

        public java.lang.Object peek()
        Description copied from interface: Channel
        Return, but do not remove object at head of Channel, or null if it is empty.