Package com.fasterxml.jackson.core.util
Class RecyclerPool.ThreadLocalPoolBase<P extends RecyclerPool.WithPool<P>>
java.lang.Object
com.fasterxml.jackson.core.util.RecyclerPool.ThreadLocalPoolBase<P>
- All Implemented Interfaces:
RecyclerPool<P>
,Serializable
- Direct Known Subclasses:
JsonRecyclerPools.ThreadLocalPool
- Enclosing interface:
- RecyclerPool<P extends RecyclerPool.WithPool<P>>
public abstract static class RecyclerPool.ThreadLocalPoolBase<P extends RecyclerPool.WithPool<P>>
extends Object
implements RecyclerPool<P>
Default
RecyclerPool
implementation that uses
ThreadLocal
for recycling instances.
Instances are stored using SoftReference
s so that
they may be Garbage Collected as needed by JVM.
Note that this implementation may not work well on platforms where
SoftReference
s are not well supported (like
Android), or on platforms where Thread
s are not
long-living or reused (like Project Loom).
- See Also:
-
Nested Class Summary
Nested classes/interfaces inherited from interface com.fasterxml.jackson.core.util.RecyclerPool
RecyclerPool.BoundedPoolBase<P extends RecyclerPool.WithPool<P>>, RecyclerPool.ConcurrentDequePoolBase<P extends RecyclerPool.WithPool<P>>, RecyclerPool.LockFreePoolBase<P extends RecyclerPool.WithPool<P>>, RecyclerPool.NonRecyclingPoolBase<P extends RecyclerPool.WithPool<P>>, RecyclerPool.StatefulImplBase<P extends RecyclerPool.WithPool<P>>, RecyclerPool.ThreadLocalPoolBase<P extends RecyclerPool.WithPool<P>>, RecyclerPool.WithPool<P extends RecyclerPool.WithPool<P>>
-
Constructor Summary
-
Method Summary
Modifier and TypeMethodDescriptionMethod called to acquire a Pooled value from this pool AND make sure it is linked back to thisRecyclerPool
as necessary for it to be released (seeRecyclerPool.releasePooled(P)
) later after usage ends.abstract P
Method for sub-classes to implement for actual acquire logic; called byRecyclerPool.acquireAndLinkPooled()
.void
releasePooled
(P pooled) Method that should be called when previously acquired (seeRecyclerPool.acquireAndLinkPooled()
) pooled value that is no longer needed; this lets pool to take ownership for possible reuse.
-
Constructor Details
-
ThreadLocalPoolBase
protected ThreadLocalPoolBase()
-
-
Method Details
-
acquireAndLinkPooled
Description copied from interface:RecyclerPool
Method called to acquire a Pooled value from this pool AND make sure it is linked back to thisRecyclerPool
as necessary for it to be released (seeRecyclerPool.releasePooled(P)
) later after usage ends. Actual acquisition is done by a call toRecyclerPool.acquirePooled()
.Default implementation calls
RecyclerPool.acquirePooled()
followed by a call toRecyclerPool.WithPool.withPool(com.fasterxml.jackson.core.util.RecyclerPool<P>)
.- Specified by:
acquireAndLinkPooled
in interfaceRecyclerPool<P extends RecyclerPool.WithPool<P>>
- Returns:
- Pooled instance for caller to use; caller expected
to call
RecyclerPool.releasePooled(P)
after it is done using instance.
-
acquirePooled
Description copied from interface:RecyclerPool
Method for sub-classes to implement for actual acquire logic; called byRecyclerPool.acquireAndLinkPooled()
.- Specified by:
acquirePooled
in interfaceRecyclerPool<P extends RecyclerPool.WithPool<P>>
- Returns:
- Instance acquired (pooled or just constructed)
-
releasePooled
Description copied from interface:RecyclerPool
Method that should be called when previously acquired (seeRecyclerPool.acquireAndLinkPooled()
) pooled value that is no longer needed; this lets pool to take ownership for possible reuse.- Specified by:
releasePooled
in interfaceRecyclerPool<P extends RecyclerPool.WithPool<P>>
- Parameters:
pooled
- Pooled instance to release back to pool
-