Package io.netty.util

Class Recycler<T>

  • Type Parameters:
    T - the type of the pooled object

    public abstract class Recycler<T>
    extends java.lang.Object
    Light-weight object pool based on a thread-local stack.
    • Constructor Detail

      • Recycler

        protected Recycler​(int maxCapacity,
                           boolean unguarded)
        USE IT CAREFULLY!
        This is creating a shareable Recycler which get() can be called concurrently from different Threads.
        Usually Recyclers uses some form of thread-local storage, but this constructor is disabling it and using a single pool of instances instead, sized as maxCapacity
        This is NOT enforcing pooled instances states to be validated if unguarded = true: it means that ObjectPool.Handle.recycle(Object) is not checking that object is the same which was recycled and assume no other recycling happens concurrently (similar to what Recycler.EnhancedHandle.unguardedRecycle(Object) does).
      • Recycler

        protected Recycler​(java.lang.Thread owner,
                           boolean unguarded)
        USE IT CAREFULLY!
        This is NOT enforcing pooled instances states to be validated if unguarded = true as stated by Recycler(boolean) and allows to pin the recycler to a specific Thread, if owner is not null.

        Since this method has been introduced for performance-sensitive cases it doesn't validate if get() is called from the owner Thread: it assumes get() to never happen concurrently.

      • Recycler

        protected Recycler​(int maxCapacityPerThread)
      • Recycler

        protected Recycler()
      • Recycler

        protected Recycler​(int chunksSize,
                           int maxCapacityPerThread,
                           boolean unguarded)
        USE IT CAREFULLY!
        This is NOT enforcing pooled instances states to be validated if unguarded = true as stated by Recycler(boolean), but it allows to tune the chunk size used for local pooling.
      • Recycler

        protected Recycler​(int chunkSize,
                           int maxCapacityPerThread,
                           java.lang.Thread owner,
                           boolean unguarded)
        USE IT CAREFULLY!
        This is NOT enforcing pooled instances states to be validated if unguarded = true and allows pinning the recycler to a specific Thread, as stated by Recycler(Thread, boolean).
        It also allows tuning the chunk size used for local pooling and the max capacity per thread.
        Throws:
        java.lang.IllegalArgumentException - if owner is null.
      • Recycler

        @Deprecated
        protected Recycler​(int maxCapacityPerThread,
                           int maxSharedCapacityFactor,
                           int ratio,
                           int maxDelayedQueuesPerThread)
        Deprecated.
        Use one of the following instead: Recycler(), Recycler(int), Recycler(int, int, int).
      • Recycler

        @Deprecated
        protected Recycler​(int maxCapacityPerThread,
                           int maxSharedCapacityFactor,
                           int ratio,
                           int maxDelayedQueuesPerThread,
                           int delayedQueueRatio)
        Deprecated.
        Use one of the following instead: Recycler(), Recycler(int), Recycler(int, int, int).
      • Recycler

        protected Recycler​(int maxCapacityPerThread,
                           int interval,
                           int chunkSize)
      • Recycler

        protected Recycler​(int maxCapacityPerThread,
                           int interval,
                           int chunkSize,
                           boolean unguarded)
        USE IT CAREFULLY!
        This is NOT enforcing pooled instances states to be validated if unguarded =true as stated by Recycler(boolean).
      • Recycler

        protected Recycler​(int maxCapacityPerThread,
                           int interval,
                           int chunkSize,
                           java.lang.Thread owner,
                           boolean unguarded)
        USE IT CAREFULLY!
        This is NOT enforcing pooled instances states to be validated if unguarded =true as stated by Recycler(boolean).