Package 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.
-
-
Field Summary
Fields Modifier and Type Field Description protected Objectitem_The slot-
Fields inherited from class EDU.oswego.cs.dl.util.concurrent.SemaphoreControlledChannel
capacity_, putGuard_, takeGuard_
-
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description protected Objectextract()Take item known to existprotected voidinsert(Object x)Set the item in preparation for a takeObjectpeek()Return, but do not remove object at head of Channel, or null if it is empty.
-
-
-
Field Detail
-
item_
protected Object item_
The slot
-
-
Constructor Detail
-
Slot
public Slot(Class semaphoreClass) throws NoSuchMethodException, SecurityException, InstantiationException, IllegalAccessException, InvocationTargetException
Create a buffer with the given capacity, using the supplied Semaphore class for semaphores.- Throws:
NoSuchMethodException- If class does not have constructor that intializes permitsSecurityException- if constructor information not accessibleInstantiationException- if semaphore class is abstractIllegalAccessException- if constructor cannot be calledInvocationTargetException- if semaphore constructor throws an exception
-
Slot
public Slot()
Create a new Slot using default Semaphore implementations
-
-
Method Detail
-
insert
protected void insert(Object x)
Set the item in preparation for a take- Specified by:
insertin classSemaphoreControlledChannel
-
extract
protected Object extract()
Take item known to exist- Specified by:
extractin classSemaphoreControlledChannel
-
-