org.apache.uima.util
Class JCasPool

java.lang.Object
  extended by 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
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
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 sytsem for the CASes
Throws:
ResourceInitializationException - if the Resource instances could not be created

getAllInstances

protected Vector<JCas> getAllInstances()

getFreeInstances

protected Vector<JCas> getFreeInstances()


Copyright © 2010 The Apache Software Foundation. All Rights Reserved.