Class 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.

    • 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
      • getAllInstances

        protected Vector<JCas> getAllInstances()
      • getFreeInstances

        protected Vector<JCas> getFreeInstances()