org.apache.uima.util

## Class JCasPool

- java.lang.Object
- - org.apache.uima.util.JCasPool

-     public class JCasPool
      extends Object

  This class represents a simple pool of `JCas` instances. This is useful for multithreaded applications, where there is a need for multiple CASes to be processed simultaneously. Because JCas creation is expensive, it is a good idea to create a pool of reusable JCas instances at initialization time, rather than creating a new JCas each time one is needed.

  Clients check-out JCas instances from the pool using the `getJCas()` method and check-in JCas instances using the `releaseJCas(JCas)` method.

- - ### Constructor Summary

    Constructors
    Constructor and Description
    `JCasPool(int aNumInstances, AnalysisEngine aAnalysisEngine)` Creates a new JCasPool
    `JCasPool(int aNumInstances, ProcessingResourceMetaData aMetaData)` Creates a new JCasPool
    `JCasPool(int aNumInstances, TextAnalysisEngine aTextAnalysisEngine)` Deprecated. As of v2.0, TextAnalysisEngine has been deprecated. Use `JCasPool(int, AnalysisEngine)` instead.

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `protected void` | `fillPool(ProcessingResourceMetaData aMetaData)` Utility method used in the constructor to fill the pool with CAS instances.
    `protected Vector<JCas>` | `getAllInstances()`
    `protected Vector<JCas>` | `getFreeInstances()`
    `JCas` | `getJCas()` Checks out a JCas from the pool.
    `JCas` | `getJCas(long aTimeout)` Checks out a JCas from the pool.
    `int` | `getSize()` Gets the size of this pool (the total number of JCas instances that it can hold).
    `void` | `releaseJCas(JCas aJCas)` Checks in a JCas to the pool.

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

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

- - ### Constructor Detail

    - #### JCasPool

          @Deprecated
          public JCasPool(int aNumInstances,
                                      TextAnalysisEngine aTextAnalysisEngine)
                               throws ResourceInitializationException

      Deprecated. As of v2.0, TextAnalysisEngine has been deprecated. Use `JCasPool(int, AnalysisEngine)` instead.
      Creates a new JCasPool
      Parameters:
        `aNumInstances` - the number of JCas instances in the pool
        `aTextAnalysisEngine` - the TAE that will create the JCas instances and which will later be used to process them
      Throws:
        `ResourceInitializationException` - if the JCas instances could not be created

    - #### JCasPool

          public JCasPool(int aNumInstances,
                          AnalysisEngine aAnalysisEngine)
                   throws ResourceInitializationException

      Creates a new JCasPool
      Parameters:
        `aNumInstances` - the number of JCas instances in the pool
        `aAnalysisEngine` - the AE that will create the JCas instances and which will later be used to process them
      Throws:
        `ResourceInitializationException` - if the JCas instances could not be created

    - #### JCasPool

          public JCasPool(int aNumInstances,
                          ProcessingResourceMetaData aMetaData)
                   throws ResourceInitializationException

      Creates a new JCasPool
      Parameters:
        `aNumInstances` - the number of JCas instances in the pool
        `aMetaData` - metadata that includes the type system for the CAS
      Throws:
        `ResourceInitializationException` - if the CAS instances could not be created

  - ### Method Detail

    - #### getJCas

          public JCas getJCas()

      Checks out a JCas from the pool.
      Returns:
        a JCas instance. Returns `null` if none are available (in which case the client may `Object.wait()` on this object in order to be notified when an instance becomes available).

    - #### releaseJCas

          public void releaseJCas(JCas aJCas)

      Checks in a JCas to the pool. This automatically calls the `JCas.reset()` method, to ensure that when the JCas is later retrieved from the pool it will be ready to use. Also notifies other Threads that may be waiting for an instance to become available.
      Parameters:
        `aJCas` - the JCas to release

    - #### getJCas

          public JCas getJCas(long aTimeout)

      Checks out a JCas from the pool. If none is currently available, wait for the specified amount of time for one to be checked in.
      Parameters:
        `aTimeout` - the time to wait in milliseconds. A value of <=0 will wait forever.
      Returns:
        a JCas instance. Returns `null` if none are available within the specified timeout period.

    - #### getSize

          public int getSize()

      Gets the size of this pool (the total number of JCas instances that it can hold).
      Returns:
        the size of this pool

    - #### fillPool

          protected void fillPool(ProcessingResourceMetaData aMetaData)
                           throws ResourceInitializationException

      Utility method used in the constructor to fill the pool with CAS instances.
      Parameters:
        `aMetaData` - metadata including the type system for the CASes
      Throws:
        `ResourceInitializationException` - if the Resource instances could not be created

    - #### getAllInstances

          protected Vector<JCas> getAllInstances()

    - #### getFreeInstances

          protected Vector<JCas> getFreeInstances()

Copyright © 2006–2021 The Apache Software Foundation. All rights reserved.