org.apache.lucene.facet.search
Class ArraysPool

java.lang.Object
  extended by org.apache.lucene.facet.search.ArraysPool

public final class ArraysPool
extends Object

A thread-safe pool of int[] and float[] arrays. One specifies the maximum number of arrays in the constructor. Calls to allocateFloatArray() or allocateIntArray() take an array from the pool, and if one is not available, allocate a new one. When you are done using the array, you should free it.

This class is used by ReusingFacetArrays for temporal facet aggregation arrays, which can be reused across searches instead of being allocated afresh on every search.

WARNING: This API is experimental and might change in incompatible ways in the next release.

Field Summary
 int arrayLength
           
 
Constructor Summary
ArraysPool(int arrayLength, int maxArrays)
          Specifies the max number of arrays to pool, as well as the length of each array to allocate.
 
Method Summary
 float[] allocateFloatArray()
          Allocates a new float[].
 int[] allocateIntArray()
          Allocates a new int[].
 void free(float[] arr)
          Frees a no-longer-needed array.
 void free(int[] arr)
          Frees a no-longer-needed array.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

arrayLength

public final int arrayLength
Constructor Detail

ArraysPool

public ArraysPool(int arrayLength,
                  int maxArrays)
Specifies the max number of arrays to pool, as well as the length of each array to allocate.

Parameters:
arrayLength - the size of the arrays to allocate
maxArrays - the maximum number of arrays to pool, from each type
Throws:
IllegalArgumentException - if maxArrays is set to 0.
Method Detail

allocateIntArray

public final int[] allocateIntArray()
Allocates a new int[]. If there's an available array in the pool, it is used, otherwise a new array is allocated.


allocateFloatArray

public final float[] allocateFloatArray()
Allocates a new float[]. If there's an available array in the pool, it is used, otherwise a new array is allocated.


free

public final void free(int[] arr)
Frees a no-longer-needed array. If there's room in the pool, the array is added to it, otherwise discarded.


free

public final void free(float[] arr)
Frees a no-longer-needed array. If there's room in the pool, the array is added to it, otherwise discarded.



Copyright © 2000-2013 Apache Software Foundation. All Rights Reserved.