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 Object
item_
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 Object
extract()
Take item known to existprotected void
insert(Object x)
Set the item in preparation for a takeObject
peek()
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:
insert
in classSemaphoreControlledChannel
-
extract
protected Object extract()
Take item known to exist- Specified by:
extract
in classSemaphoreControlledChannel
-
-