Package io.netty.util
Class Recycler<T>
- java.lang.Object
-
- io.netty.util.Recycler<T>
-
- Type Parameters:
T- the type of the pooled object
public abstract class Recycler<T> extends java.lang.ObjectLight-weight object pool based on a thread-local stack.
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static classRecycler.EnhancedHandle<T>static interfaceRecycler.Handle<T>
-
Constructor Summary
Constructors Modifier Constructor Description protectedRecycler()protectedRecycler(boolean unguarded)USE IT CAREFULLY!protectedRecycler(int maxCapacityPerThread)protectedRecycler(int maxCapacity, boolean unguarded)USE IT CAREFULLY!protectedRecycler(int maxCapacityPerThread, int maxSharedCapacityFactor)Deprecated.protectedRecycler(int chunksSize, int maxCapacityPerThread, boolean unguarded)USE IT CAREFULLY!protectedRecycler(int maxCapacityPerThread, int interval, int chunkSize)protectedRecycler(int maxCapacityPerThread, int interval, int chunkSize, boolean unguarded)USE IT CAREFULLY!protectedRecycler(int maxCapacityPerThread, int maxSharedCapacityFactor, int ratio, int maxDelayedQueuesPerThread)Deprecated.protectedRecycler(int maxCapacityPerThread, int maxSharedCapacityFactor, int ratio, int maxDelayedQueuesPerThread, int delayedQueueRatio)Deprecated.protectedRecycler(int maxCapacityPerThread, int interval, int chunkSize, java.lang.Thread owner, boolean unguarded)USE IT CAREFULLY!protectedRecycler(int chunkSize, int maxCapacityPerThread, java.lang.Thread owner, boolean unguarded)USE IT CAREFULLY!protectedRecycler(java.lang.Thread owner, boolean unguarded)USE IT CAREFULLY!
-
Method Summary
All Methods Static Methods Instance Methods Abstract Methods Concrete Methods Deprecated Methods Modifier and Type Method Description Tget()protected abstract TnewObject(Recycler.Handle<T> handle)booleanrecycle(T o, Recycler.Handle<T> handle)Deprecated.static voidunpinOwner(Recycler<?> recycler)
-
-
-
Constructor Detail
-
Recycler
protected Recycler(int maxCapacity, boolean unguarded)USE IT CAREFULLY!
This is creating a shareableRecyclerwhichget()can be called concurrently from differentThreads.
UsuallyRecyclers uses some form of thread-local storage, but this constructor is disabling it and using a single pool of instances instead, sized asmaxCapacity
This is NOT enforcing pooled instances states to be validated ifunguarded = true: it means thatObjectPool.Handle.recycle(Object)is not checking thatobjectis the same which was recycled and assume no other recycling happens concurrently (similar to whatRecycler.EnhancedHandle.unguardedRecycle(Object)does).
-
Recycler
protected Recycler(boolean unguarded)
USE IT CAREFULLY!
This is NOT enforcing pooled instances states to be validated ifunguarded = true: it means thatObjectPool.Handle.recycle(Object)is not checking thatobjectis the same which was recycled and assume no other recycling happens concurrently (similar to whatRecycler.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 ifunguarded = trueas stated byRecycler(boolean)and allows to pin the recycler to a specificThread, ifowneris notnull.Since this method has been introduced for performance-sensitive cases it doesn't validate if
get()is called from theownerThread: it assumesget()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 ifunguarded = trueas stated byRecycler(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 ifunguarded = trueand allows pinning the recycler to a specificThread, as stated byRecycler(Thread, boolean).
It also allows tuning the chunk size used for local pooling and the max capacity per thread.- Throws:
java.lang.IllegalArgumentException- ifownerisnull.
-
Recycler
@Deprecated protected Recycler(int maxCapacityPerThread, int maxSharedCapacityFactor)Deprecated.
-
Recycler
@Deprecated protected Recycler(int maxCapacityPerThread, int maxSharedCapacityFactor, int ratio, int maxDelayedQueuesPerThread)Deprecated.
-
Recycler
@Deprecated protected Recycler(int maxCapacityPerThread, int maxSharedCapacityFactor, int ratio, int maxDelayedQueuesPerThread, int delayedQueueRatio)Deprecated.
-
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 ifunguarded =trueas stated byRecycler(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 ifunguarded =trueas stated byRecycler(boolean).
-
-
Method Detail
-
get
public final T get()
-
unpinOwner
public static void unpinOwner(Recycler<?> recycler)
Disassociates theRecyclerfrom the currentThreadif it was pinned, seeRecycler(Thread, boolean).Be aware that this method is not thread-safe: it's necessary to allow a
Threadto be garbage collected even ifRecycler.Handles are still referenced by other objects.
-
recycle
@Deprecated public final boolean recycle(T o, Recycler.Handle<T> handle)
Deprecated.
-
newObject
protected abstract T newObject(Recycler.Handle<T> handle)
- Parameters:
handle- can NOT be null.
-
-