T
- the templated type to store in the bagpublic class ConcurrentBag<T extends IConcurrentBagEntry> extends Object
Constructor and Description |
---|
ConcurrentBag(IBagStateListener listener)
Construct a ConcurrentBag with the specified listener.
|
Modifier and Type | Method and Description |
---|---|
void |
add(T bagEntry)
Add a new object to the bag for others to borrow.
|
T |
borrow(long timeout,
TimeUnit timeUnit)
The method will borrow a BagEntry from the bag, blocking for the
specified timeout if none are available.
|
void |
close()
Close the bag to further adds.
|
void |
dumpState() |
int |
getCount(int state)
Get a count of the number of items in the specified state at the time of this call.
|
int |
getPendingQueue()
Get the number of threads pending (waiting) for an item from the
bag to become available.
|
boolean |
remove(T bagEntry)
Remove a value from the bag.
|
void |
requite(T bagEntry)
This method will return a borrowed object to the bag.
|
boolean |
reserve(T bagEntry)
The method is used to make an item in the bag "unavailable" for
borrowing.
|
int |
size()
Get the total number of items in the bag.
|
void |
unreserve(T bagEntry)
This method is used to make an item reserved via
reserve(T)
available again for borrowing. |
List<T> |
values(int state)
This method provides a "snaphot" in time of the BagEntry
items in the bag in the specified state.
|
public ConcurrentBag(IBagStateListener listener)
listener
- the IBagStateListener to attach to this bagpublic T borrow(long timeout, TimeUnit timeUnit) throws InterruptedException
timeout
- how long to wait before giving up, in units of unittimeUnit
- a TimeUnit
determining how to interpret the timeout parameterInterruptedException
- if interrupted while waitingpublic void requite(T bagEntry)
bagEntry
- the value to return to the bagNullPointerException
- if value is nullIllegalStateException
- if the requited value was not borrowed from the bagpublic void add(T bagEntry)
bagEntry
- an object to add to the bagpublic boolean remove(T bagEntry)
borrow(long, TimeUnit)
or reserve(T)
bagEntry
- the value to removeIllegalStateException
- if an attempt is made to remove an object
from the bag that was not borrowed or reserved firstpublic void close()
public List<T> values(int state)
reserve(T)
on items in list before performing any action on them.state
- one of STATE_NOT_IN_USE or STATE_IN_USEpublic boolean reserve(T bagEntry)
values(int)
method. Items that are
reserved can be removed from the bag via remove(T)
without the need to unreserve them. Items that are not removed
from the bag can be make available for borrowing again by calling
the unreserve(T)
method.bagEntry
- the item to reservepublic void unreserve(T bagEntry)
reserve(T)
available again for borrowing.bagEntry
- the item to unreservepublic int getPendingQueue()
public int getCount(int state)
state
- the state of the items to countpublic int size()
public void dumpState()
Copyright © 2015 Zaxxer.com. All Rights Reserved.