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

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