com.fasterxml.jackson.core.util

## Class JsonRecyclerPools

- java.lang.Object
- - com.fasterxml.jackson.core.util.JsonRecyclerPools

    public final class JsonRecyclerPools
    extends Object

Set of `RecyclerPool` implementations to be used by the default JSON-backed `JsonFactory` for recycling `BufferRecycler` containers.

Since:
  2.16

### Nested Class Summary

Nested Classes
`static class` `JsonRecyclerPools.BoundedPool` `RecyclerPool` implementation that uses a bounded queue (`ArrayBlockingQueue` for recycling instances.
`static class` `JsonRecyclerPools.ConcurrentDequePool` `RecyclerPool` implementation that uses `ConcurrentLinkedDeque` for recycling instances.
`static class` `JsonRecyclerPools.LockFreePool` `RecyclerPool` implementation that uses a lock free linked list for recycling instances.
`static class` `JsonRecyclerPools.NonRecyclingPool` Dummy `RecyclerPool` implementation that does not recycle anything but simply creates new instances when asked to acquire items.
`static class` `JsonRecyclerPools.ThreadLocalPool` `ThreadLocal`-based `RecyclerPool` implementation used for recycling `BufferRecycler` instances: see `RecyclerPool.ThreadLocalPoolBase` for full explanation of functioning.

### Constructor Summary

Constructors
Constructor and Description
`JsonRecyclerPools()`

### Method Summary

All Methods Static Methods Concrete Methods
`static RecyclerPool<BufferRecycler>` `defaultPool()`
`static RecyclerPool<BufferRecycler>` `newBoundedPool(int size)` Accessor for constructing a new, non-shared `JsonRecyclerPools.BoundedPool` instance.
`static RecyclerPool<BufferRecycler>` `newConcurrentDequePool()` Accessor for constructing a new, non-shared `JsonRecyclerPools.ConcurrentDequePool` instance.
`static RecyclerPool<BufferRecycler>` `newLockFreePool()` Accessor for constructing a new, non-shared `JsonRecyclerPools.LockFreePool` instance.
`static RecyclerPool<BufferRecycler>` `nonRecyclingPool()` Accessor for getting the shared/global `JsonRecyclerPools.NonRecyclingPool` instance (due to design only one instance ever needed)
`static RecyclerPool<BufferRecycler>` `sharedBoundedPool()` Accessor for getting the shared/global `JsonRecyclerPools.BoundedPool` instance.
`static RecyclerPool<BufferRecycler>` `sharedConcurrentDequePool()` Accessor for getting the shared/global `JsonRecyclerPools.ConcurrentDequePool` instance.
`static RecyclerPool<BufferRecycler>` `sharedLockFreePool()` Accessor for getting the shared/global `JsonRecyclerPools.LockFreePool` instance.
`static RecyclerPool<BufferRecycler>` `threadLocalPool()` Accessor for getting the shared/global `JsonRecyclerPools.ThreadLocalPool` instance (due to design only one instance ever needed)

### Methods inherited from class java.lang.Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

### Constructor Detail

#### JsonRecyclerPools

    public JsonRecyclerPools()

### Method Detail

#### defaultPool

    public static RecyclerPool<BufferRecycler> defaultPool()

Returns:
  the default `RecyclerPool` implementation which is the thread local based one: basically alias to `threadLocalPool()`).

#### threadLocalPool

    public static RecyclerPool<BufferRecycler> threadLocalPool()

Accessor for getting the shared/global `JsonRecyclerPools.ThreadLocalPool` instance (due to design only one instance ever needed)

Returns:
  Globally shared instance of `JsonRecyclerPools.ThreadLocalPool`

#### nonRecyclingPool

    public static RecyclerPool<BufferRecycler> nonRecyclingPool()

Accessor for getting the shared/global `JsonRecyclerPools.NonRecyclingPool` instance (due to design only one instance ever needed)

Returns:
  Globally shared instance of `JsonRecyclerPools.NonRecyclingPool`.

#### sharedConcurrentDequePool

    public static RecyclerPool<BufferRecycler> sharedConcurrentDequePool()

Accessor for getting the shared/global `JsonRecyclerPools.ConcurrentDequePool` instance.

Returns:
  Globally shared instance of `JsonRecyclerPools.NonRecyclingPool`.

#### newConcurrentDequePool

    public static RecyclerPool<BufferRecycler> newConcurrentDequePool()

Accessor for constructing a new, non-shared `JsonRecyclerPools.ConcurrentDequePool` instance.

Returns:
  Globally shared instance of `JsonRecyclerPools.NonRecyclingPool`.

#### sharedLockFreePool

    public static RecyclerPool<BufferRecycler> sharedLockFreePool()

Accessor for getting the shared/global `JsonRecyclerPools.LockFreePool` instance.

Returns:
  Globally shared instance of `JsonRecyclerPools.LockFreePool`.

#### newLockFreePool

    public static RecyclerPool<BufferRecycler> newLockFreePool()

Accessor for constructing a new, non-shared `JsonRecyclerPools.LockFreePool` instance.

Returns:
  Globally shared instance of `JsonRecyclerPools.LockFreePool`.

#### sharedBoundedPool

    public static RecyclerPool<BufferRecycler> sharedBoundedPool()

Accessor for getting the shared/global `JsonRecyclerPools.BoundedPool` instance.

Returns:
  Globally shared instance of `JsonRecyclerPools.BoundedPool`.

#### newBoundedPool

    public static RecyclerPool<BufferRecycler> newBoundedPool(int size)

Accessor for constructing a new, non-shared `JsonRecyclerPools.BoundedPool` instance.

Parameters:
  `size` - Maximum number of values to pool
Returns:
  Globally shared instance of `JsonRecyclerPools.BoundedPool`.