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 2009/07/30 17:04:29 UTC

svn commit: r799308 - /incubator/uima/sandbox/trunk/uima-as/uimaj-as-core/src/main/java/org/apache/uima/aae/spi/transport/vm/VmTransport.java

Author: cwiklik
Date: Thu Jul 30 15:04:29 2009
New Revision: 799308

URL: http://svn.apache.org/viewvc?rev=799308&view=rev
Log:
UIMA-1439 Modified stopIt() to wait for threads to stop

Modified:
    incubator/uima/sandbox/trunk/uima-as/uimaj-as-core/src/main/java/org/apache/uima/aae/spi/transport/vm/VmTransport.java

Modified: incubator/uima/sandbox/trunk/uima-as/uimaj-as-core/src/main/java/org/apache/uima/aae/spi/transport/vm/VmTransport.java
URL: http://svn.apache.org/viewvc/incubator/uima/sandbox/trunk/uima-as/uimaj-as-core/src/main/java/org/apache/uima/aae/spi/transport/vm/VmTransport.java?rev=799308&r1=799307&r2=799308&view=diff
==============================================================================
--- incubator/uima/sandbox/trunk/uima-as/uimaj-as-core/src/main/java/org/apache/uima/aae/spi/transport/vm/VmTransport.java (original)
+++ incubator/uima/sandbox/trunk/uima-as/uimaj-as-core/src/main/java/org/apache/uima/aae/spi/transport/vm/VmTransport.java Thu Jul 30 15:04:29 2009
@@ -111,12 +111,26 @@
   public void stopIt() throws UimaSpiException {
     executor.purge();
     executor.shutdownNow();
-    
     Set <Entry<String, UimaVmMessageDispatcher>> set = dispatchers.entrySet();
     for( Entry<String, UimaVmMessageDispatcher> entry: set) {
       UimaVmMessageDispatcher dispatcher = entry.getValue();
       dispatcher.stop();
     }
+    while( !executor.isShutdown()) {
+      Thread.currentThread().getThreadGroup().list();
+      synchronized(this) {
+        try {
+          this.wait(50);
+        } catch( InterruptedException e) {break;}
+      }
+    } 
+    if ( executor.isShutdown() && threadGroup.activeCount() == 0) {
+      try {
+        threadGroup.destroy();
+      } catch ( Exception e) {
+        System.out.println("Thread Group:"+threadGroup.getName()+ " Still Has Active Threads. Current Count:"+threadGroup.activeCount());
+      }
+    }
   }
   public void destroy() {
     try {