- 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 protected
SimpleMeter(ResourceType type, ResourceRequest parent)
Constructor for subclasses.
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description static SimpleMeter
create(ResourceType type)
Returns a new SimpleMeter with the ResourceType.static SimpleMeter
create(ResourceType type, ResourceRequest parent)
Returns a new SimpleMeter with the ResourceType and allocating from a parent.boolean
equals(Object obj)
Indicates whether some other object is the same object as this one.long
getAllocated()
Returns the cumulative total of allocations from the ResourceMeter.ResourceRequest
getParent()
Returns the parent ResourceRequest.ResourceType
getType()
Returns theResourceType
.long
getValue()
Returns the current net value of the ResourceMeter.int
hashCode()
Returns the hashcode from for this object.long
request(long amount, ResourceId id)
Returns the validated and allocated amount and adjusts the meter.String
toString()
Returns a string representation of the meter.protected long
validate(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:ResourceMeter
Returns the current net value of the ResourceMeter. The net value is the difference between the cumulative amounts allocated minus all amounts released.- Specified by:
getValue
in interfaceResourceMeter
- Returns:
- the current net value of the meter
-
getAllocated
public final long getAllocated()
Description copied from interface:ResourceMeter
Returns the cumulative total of allocations from the ResourceMeter.- Specified by:
getAllocated
in interfaceResourceMeter
- Returns:
- the total allocated from the meter
-
getType
public final ResourceType getType()
Description copied from interface:ResourceMeter
Returns theResourceType
.- Specified by:
getType
in 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:
request
in 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 ResourceRequestDeniedException
Validate 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:
hashCode
in 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:
equals
in classObject
- Parameters:
obj
- the reference object with which to compare- Returns:
true
if this object is the same as the obj argument;false
otherwise- See Also:
Object.hashCode()
,HashMap
-
-