You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@uima.apache.org by cw...@apache.org on 2012/01/06 22:10:01 UTC

svn commit: r1228408 - /uima/uima-as/trunk/uimaj-as-core/src/main/java/org/apache/uima/aae/UimaAsThreadFactory.java

Author: cwiklik
Date: Fri Jan  6 21:10:01 2012
New Revision: 1228408

URL: http://svn.apache.org/viewvc?rev=1228408&view=rev
Log:
UIMA-2309 use CountDownLatch to indicate the thread exit

Modified:
    uima/uima-as/trunk/uimaj-as-core/src/main/java/org/apache/uima/aae/UimaAsThreadFactory.java

Modified: uima/uima-as/trunk/uimaj-as-core/src/main/java/org/apache/uima/aae/UimaAsThreadFactory.java
URL: http://svn.apache.org/viewvc/uima/uima-as/trunk/uimaj-as-core/src/main/java/org/apache/uima/aae/UimaAsThreadFactory.java?rev=1228408&r1=1228407&r2=1228408&view=diff
==============================================================================
--- uima/uima-as/trunk/uimaj-as-core/src/main/java/org/apache/uima/aae/UimaAsThreadFactory.java (original)
+++ uima/uima-as/trunk/uimaj-as-core/src/main/java/org/apache/uima/aae/UimaAsThreadFactory.java Fri Jan  6 21:10:01 2012
@@ -19,6 +19,7 @@
 
 package org.apache.uima.aae;
 
+import java.util.concurrent.CountDownLatch;
 import java.util.concurrent.ThreadFactory;
 import java.util.concurrent.atomic.AtomicInteger;
 
@@ -51,6 +52,8 @@ public class UimaAsThreadFactory impleme
   
   private final int poolId = poolIdGenerator.incrementAndGet();
   
+  private CountDownLatch latchToCountNumberOfTerminatedThreads;
+  
   public UimaAsThreadFactory(ThreadGroup tGroup) {
     this(tGroup,null);
   }
@@ -61,9 +64,14 @@ public class UimaAsThreadFactory impleme
    * @param aController
    */
   public UimaAsThreadFactory(ThreadGroup tGroup, PrimitiveAnalysisEngineController aController) {
+    this( tGroup, aController, null);
+  }
+  public UimaAsThreadFactory(ThreadGroup tGroup, PrimitiveAnalysisEngineController aController, CountDownLatch latchToCountNumberOfTerminatedThreads) {
     controller = aController;
     theThreadGroup = tGroup;
+    this.latchToCountNumberOfTerminatedThreads = latchToCountNumberOfTerminatedThreads;
   }
+  
   public void setThreadNamePrefix(String prefix) {
     threadNamePrefix = prefix;
   }
@@ -124,13 +132,16 @@ public class UimaAsThreadFactory impleme
             return;
           } finally {
               if ( controller instanceof PrimitiveAnalysisEngineController_impl ) {
-       			 UIMAFramework.getLogger(CLASS_NAME).logrb(Level.INFO, getClass().getName(),
+       			     UIMAFramework.getLogger(CLASS_NAME).logrb(Level.INFO, getClass().getName(),
         					"UimaAsThreadFactory.run()", UIMAEE_Constants.JMS_LOG_RESOURCE_BUNDLE,
         					"UIMAEE_process_thread_exiting__INFO", new Object[] {controller.getComponentName(),Thread.currentThread().getId()});
             	  ((PrimitiveAnalysisEngineController_impl)controller).destroyAE();
-        			 UIMAFramework.getLogger(CLASS_NAME).logrb(Level.INFO, getClass().getName(),
+        			  UIMAFramework.getLogger(CLASS_NAME).logrb(Level.INFO, getClass().getName(),
          					"UimaAsThreadFactory.run()", UIMAEE_Constants.JMS_LOG_RESOURCE_BUNDLE,
          					"UIMAEE_ae_instance_destroy_called__INFO", new Object[] {controller.getComponentName(),Thread.currentThread().getId()});
+        			  if ( latchToCountNumberOfTerminatedThreads != null ) {
+                  latchToCountNumberOfTerminatedThreads.countDown();
+        			  }
               }
           }