Class SharedResourceHolder
- java.lang.Object
-
- org.apache.beam.vendor.grpc.v1p48p1.io.grpc.internal.SharedResourceHolder
-
@ThreadSafe public final class SharedResourceHolder extends Object
A holder for shared resource singletons.Components like client channels and servers need certain resources, e.g. a thread pool, to run. If the user has not provided such resources, these components will use a default one, which is shared as a static resource. This class holds these default resources and manages their life-cycles.
A resource is identified by the reference of a
SharedResourceHolder.Resourceobject, which is typically a singleton, provided to the get() and release() methods. Each Resource object (not its class) maps to an object cached in the holder.Resources are ref-counted and shut down after a delay when the ref-count reaches zero.
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static interfaceSharedResourceHolder.Resource<T>Defines a resource, and the way to create and destroy instances of it.
-
Method Summary
All Methods Static Methods Concrete Methods Modifier and Type Method Description static <T> Tget(SharedResourceHolder.Resource<T> resource)Try to get an existing instance of the given resource.static <T> Trelease(SharedResourceHolder.Resource<T> resource, T instance)Releases an instance of the given resource.
-
-
-
Method Detail
-
get
public static <T> T get(SharedResourceHolder.Resource<T> resource)
Try to get an existing instance of the given resource. If an instance does not exist, create a new one with the given factory.- Parameters:
resource- the singleton object that identifies the requested static resource
-
release
public static <T> T release(SharedResourceHolder.Resource<T> resource, T instance)
Releases an instance of the given resource.The instance must have been obtained from
get(Resource). Otherwise will throw IllegalArgumentException.Caller must not release a reference more than once. It's advisory that you clear the reference to the instance with the null returned by this method.
- Parameters:
resource- the singleton Resource object that identifies the released static resourceinstance- the released static resource- Returns:
- a null which the caller can use to clear the reference to that instance.
-
-