Class Pool<T>

    • Field Summary

      Fields 
      Modifier and Type Field Description
      int max
      The maximum number of objects that will be pooled.
      int peak
      The highest number of free objects.
    • Constructor Summary

      Constructors 
      Constructor Description
      Pool()
      Creates a pool with an initial capacity of 16 and no maximum.
      Pool​(int initialCapacity)
      Creates a pool with the specified initial capacity and no maximum.
      Pool​(int initialCapacity, int max)  
    • Method Summary

      All Methods Instance Methods Abstract Methods Concrete Methods 
      Modifier and Type Method Description
      void clear()
      Removes and discards all free objects from this pool.
      protected void discard​(T object)
      Called when an object is discarded.
      void fill​(int size)
      Adds the specified number of new free objects to the pool.
      void free​(T object)
      Puts the specified object in the pool, making it eligible to be returned by obtain().
      void freeAll​(Array<T> objects)
      Puts the specified objects in the pool.
      int getFree()
      The number of objects available to be obtained.
      protected abstract T newObject()  
      T obtain()
      Returns an object from this pool.
      protected void reset​(T object)
      Called when an object is freed to clear the state of the object for possible later reuse.
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Field Detail

      • max

        public final int max
        The maximum number of objects that will be pooled.
      • peak

        public int peak
        The highest number of free objects. Can be reset any time.
    • Constructor Detail

      • Pool

        public Pool()
        Creates a pool with an initial capacity of 16 and no maximum.
      • Pool

        public Pool​(int initialCapacity)
        Creates a pool with the specified initial capacity and no maximum.
      • Pool

        public Pool​(int initialCapacity,
                    int max)
        Parameters:
        initialCapacity - The initial size of the array supporting the pool. No objects are created/pre-allocated. Use fill(int) after instantiation if needed.
        max - The maximum number of free objects to store in this pool.
    • Method Detail

      • newObject

        protected abstract T newObject()
      • obtain

        public T obtain()
        Returns an object from this pool. The object may be new (from newObject()) or reused (previously freed).
      • free

        public void free​(T object)
        Puts the specified object in the pool, making it eligible to be returned by obtain(). If the pool already contains max free objects, the specified object is discarded, it is not reset and not added to the pool.

        The pool does not check if an object is already freed, so the same object must not be freed multiple times.

      • fill

        public void fill​(int size)
        Adds the specified number of new free objects to the pool. Usually called early on as a pre-allocation mechanism but can be used at any time.
        Parameters:
        size - the number of objects to be added
      • reset

        protected void reset​(T object)
        Called when an object is freed to clear the state of the object for possible later reuse. The default implementation calls Pool.Poolable.reset() if the object is Pool.Poolable.
      • discard

        protected void discard​(T object)
        Called when an object is discarded. This is the case when an object is freed, but the maximum capacity of the pool is reached, and when the pool is cleared
      • freeAll

        public void freeAll​(Array<T> objects)
        Puts the specified objects in the pool. Null objects within the array are silently ignored.

        The pool does not check if an object is already freed, so the same object must not be freed multiple times.

        See Also:
        free(Object)
      • clear

        public void clear()
        Removes and discards all free objects from this pool.
      • getFree

        public int getFree()
        The number of objects available to be obtained.