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 SoftReferences so that
they may be Garbage Collected as needed by JVM.
Note that this implementation may not work well on platforms where
SoftReferences are not well supported (like
Android), or on platforms where Threads 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>> -
Method Summary
Modifier and TypeMethodDescriptionMethod called to acquire a Pooled value from this pool AND make sure it is linked back to thisRecyclerPoolas necessary for it to be released (seeRecyclerPool.releasePooled(P)) later after usage ends.abstract PMethod for sub-classes to implement for actual acquire logic; called byRecyclerPool.acquireAndLinkPooled().booleanclear()Optional method that may allow dropping of all pooled Objects; mostly useful for unbounded pool implementations that may retain significant memory and that may then be cleared regularly.intDiagnostic method for obtaining an estimate of number of pooled items this pool contains, available for recycling.voidreleasePooled(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.
-
Method Details
-
acquireAndLinkPooled
Description copied from interface:RecyclerPoolMethod called to acquire a Pooled value from this pool AND make sure it is linked back to thisRecyclerPoolas 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:
acquireAndLinkPooledin 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:RecyclerPoolMethod for sub-classes to implement for actual acquire logic; called byRecyclerPool.acquireAndLinkPooled().- Specified by:
acquirePooledin interfaceRecyclerPool<P extends RecyclerPool.WithPool<P>>- Returns:
- Instance acquired (pooled or just constructed)
-
releasePooled
Description copied from interface:RecyclerPoolMethod 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:
releasePooledin interfaceRecyclerPool<P extends RecyclerPool.WithPool<P>>- Parameters:
pooled- Pooled instance to release back to pool
-
pooledCount
public int pooledCount()Description copied from interface:RecyclerPoolDiagnostic method for obtaining an estimate of number of pooled items this pool contains, available for recycling. Note that in addition to this information possibly not being available (denoted by return value of-1) even when available this may be just an approximation.Default method implementation simply returns
-1and is meant to be overridden by concrete sub-classes.- Specified by:
pooledCountin interfaceRecyclerPool<P extends RecyclerPool.WithPool<P>>- Returns:
- Number of pooled entries available from this pool, if available;
-1if not.
-
clear
public boolean clear()Description copied from interface:RecyclerPoolOptional method that may allow dropping of all pooled Objects; mostly useful for unbounded pool implementations that may retain significant memory and that may then be cleared regularly.- Specified by:
clearin interfaceRecyclerPool<P extends RecyclerPool.WithPool<P>>- Returns:
trueIf pool supports operation and dropped all pooled Objects;falseotherwise.
-