- java.lang.Object
-
- jdk.management.resource.SimpleMeter
-
- All Implemented Interfaces:
ResourceMeter,ResourceRequest
- Direct Known Subclasses:
NotifyingMeter
public class SimpleMeter extends Object implements ResourceMeter, ResourceRequest
A SimpleMeter counts resource requests and releases and allocates from an optional parent. The amount is validated before requesting allocation from the parent. Subclasses can override the validation to include bounds checking, notification, callbacks, etc.- Since:
- 8u40
-
-
Constructor Summary
Constructors Modifier Constructor Description protectedSimpleMeter(ResourceType type, ResourceRequest parent)Constructor for subclasses.
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description static SimpleMetercreate(ResourceType type)Returns a new SimpleMeter with the ResourceType.static SimpleMetercreate(ResourceType type, ResourceRequest parent)Returns a new SimpleMeter with the ResourceType and allocating from a parent.booleanequals(Object obj)Indicates whether some other object is the same object as this one.longgetAllocated()Returns the cumulative total of allocations from the ResourceMeter.ResourceRequestgetParent()Returns the parent ResourceRequest.ResourceTypegetType()Returns theResourceType.longgetValue()Returns the current net value of the ResourceMeter.inthashCode()Returns the hashcode from for this object.longrequest(long amount, ResourceId id)Returns the validated and allocated amount and adjusts the meter.StringtoString()Returns a string representation of the meter.protected longvalidate(long previous, long amount, ResourceId id)Validate the amount returning the validated amount.
-
-
-
Constructor Detail
-
SimpleMeter
protected SimpleMeter(ResourceType type, ResourceRequest parent)
Constructor for subclasses.- Parameters:
type- the ResourceType for the meterparent- a ResourceRequest used as the parent to allocate from; may benull
-
-
Method Detail
-
create
public static SimpleMeter create(ResourceType type)
Returns a new SimpleMeter with the ResourceType.- Parameters:
type- the ResourceType- Returns:
- a new SimpleMeter
-
create
public static SimpleMeter create(ResourceType type, ResourceRequest parent)
Returns a new SimpleMeter with the ResourceType and allocating from a parent.- Parameters:
type- the ResourceTypeparent- the parent ResourceMeter; may benull- Returns:
- a new SimpleMeter
-
getValue
public final long getValue()
Description copied from interface:ResourceMeterReturns the current net value of the ResourceMeter. The net value is the difference between the cumulative amounts allocated minus all amounts released.- Specified by:
getValuein interfaceResourceMeter- Returns:
- the current net value of the meter
-
getAllocated
public final long getAllocated()
Description copied from interface:ResourceMeterReturns the cumulative total of allocations from the ResourceMeter.- Specified by:
getAllocatedin interfaceResourceMeter- Returns:
- the total allocated from the meter
-
getType
public final ResourceType getType()
Description copied from interface:ResourceMeterReturns theResourceType.- Specified by:
getTypein interfaceResourceMeter- Returns:
- the ResourceType
-
getParent
public final ResourceRequest getParent()
Returns the parent ResourceRequest.- Returns:
- Returns the parent ResourceRequest; may be null
-
request
public final long request(long amount, ResourceId id)Returns the validated and allocated amount and adjusts the meter. For allocation, amount greater than zero, the amount is applied to the meter before validation so it is immediately visible. If the validation or allocation from the parent is for a different amount the delta is restored to the meter. For releasing a resource, amount less than zero, the amount is applied after validation to avoid premature release of the resource.- Specified by:
requestin interfaceResourceRequest- Parameters:
amount- the amount to allocate; if zero nothing is doneid- the ResourceId for the resource instance; may benull- Returns:
- the allocated amount, zero, positive or negative
-
validate
protected long validate(long previous, long amount, ResourceId id) throws ResourceRequestDeniedExceptionValidate the amount returning the validated amount. Override to apply bounds checks and callbacks.For allocation, positive amounts, the amount is applied to the meter before validation so it is immediately visible. For releasing a resource, negative amounts, the amount is applied after validation to avoid premature release of the resource. If the amount returned is different than requested the meter will be corrected with the difference.
- Parameters:
previous- the meter value before the current requestamount- an amount, positive to allocate, negative to releaseid- the ResourceId for the resource instance; may benull- Returns:
- the validated amount, zero or throw an exception to deny;
return a value with the same sign as the
amount - Throws:
ResourceRequestDeniedException- if the amount cannot be satisfied
-
toString
public String toString()
Returns a string representation of the meter.
-
hashCode
public final int hashCode()
Returns the hashcode from for this object.- Overrides:
hashCodein classObject- Returns:
- a hashcode for this object
- See Also:
Object.equals(java.lang.Object),System.identityHashCode(java.lang.Object)
-
equals
public final boolean equals(Object obj)
Indicates whether some other object is the same object as this one.- Overrides:
equalsin classObject- Parameters:
obj- the reference object with which to compare- Returns:
trueif this object is the same as the obj argument;falseotherwise- See Also:
Object.hashCode(),HashMap
-
-