## EDU.oswego.cs.dl.util.concurrent
Class Slot

    java.lang.Object
      EDU.oswego.cs.dl.util.concurrent.SemaphoreControlledChannel
          EDU.oswego.cs.dl.util.concurrent.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. ]

Field Summary
`protected java.lang.Object` `item_` The slot

Fields inherited from class EDU.oswego.cs.dl.util.concurrent.SemaphoreControlledChannel
`capacity_, putGuard_, takeGuard_`

Constructor Summary
`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
`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 EDU.oswego.cs.dl.util.concurrent.SemaphoreControlledChannel
`capacity, offer, poll, put, size, take`

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

### insert

    protected void insert(java.lang.Object x)

  Set the item in preparation for a take

  Specified by:
    `insert` in class `SemaphoreControlledChannel`

### extract

    protected java.lang.Object extract()

  Take item known to exist

  Specified by:
    `extract` in class `SemaphoreControlledChannel`

### 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.