public static interface ResourceLimits.Limit
ResourceLimits.Concurrent
, for shared limits, which is thread-safe;
2. ResourceLimits.Basic
, for limits that are not shared between threads, is not thread-safe.Modifier and Type | Method and Description |
---|---|
void |
allocate(long amount)
Allocates an amount independent of permits available from this limit.
|
long |
limit() |
ResourceLimits.Outcome |
release(long amount) |
long |
remaining() |
long |
setLimit(long newLimit)
Sets the total amount of permits represented by this
ResourceLimits.Limit - the capacity
If the old limit has been reached and the new limit is large enough to allow for more
permits to be aqcuired, subsequent calls to allocate(long) or tryAllocate(long)
will succeed. |
boolean |
tryAllocate(long amount)
Attempts to allocate an amount of permits from this limit.
|
long |
using() |
long limit()
ResourceLimits.Limit
- the capacitylong setLimit(long newLimit)
ResourceLimits.Limit
- the capacity
If the old limit has been reached and the new limit is large enough to allow for more
permits to be aqcuired, subsequent calls to allocate(long)
or tryAllocate(long)
will succeed.
If the new limit is lower than the current amount of allocated permits then subsequent calls
to allocate(long)
or tryAllocate(long)
will block or fail respectively.long remaining()
long using()
boolean tryAllocate(long amount)
release(long)
.true
if the allocation was successful, false
otherwisevoid allocate(long amount)
release(long)
.ResourceLimits.Outcome release(long amount)
amount
- return the amount of permits back to this limitABOVE_LIMIT
if there aren't enough permits available even after the release, or
BELOW_LIMIT
if there are enough permits available after the releaese.Copyright © 2009- The Apache Software Foundation