Author: cwiklik
Date: Wed Feb 9 19:24:34 2011
New Revision: 1069050
URL: http://svn.apache.org/viewvc?rev=1069050&view=rev
Log:
UIMA-2038 Extended to facilitate clean thread shutdown.
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=1069050&r1=1069049&r2=1069050&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
Wed Feb 9 19:24:34 2011
@@ -20,6 +20,7 @@
package org.apache.uima.aae;
import java.util.concurrent.ThreadFactory;
+import java.util.concurrent.atomic.AtomicInteger;
import org.apache.uima.UIMAFramework;
import org.apache.uima.aae.controller.PrimitiveAnalysisEngineController;
@@ -36,12 +37,23 @@ import org.apache.uima.util.Level;
public class UimaAsThreadFactory implements ThreadFactory {
private static final Class CLASS_NAME = UimaAsThreadFactory.class;
-
+ private static final String THREAD_POOL = "[UIMA AS ThreadPool ";
private PrimitiveAnalysisEngineController controller;
private ThreadGroup theThreadGroup;
- /**
+ private String threadNamePrefix=null;
+
+ private boolean isDaemon;
+
+ public static AtomicInteger poolIdGenerator = new AtomicInteger();
+
+ private final int poolId = poolIdGenerator.incrementAndGet();
+
+ public UimaAsThreadFactory(ThreadGroup tGroup) {
+ this(tGroup,null);
+ }
+ /**
*
*
* @param tGroup
@@ -51,7 +63,15 @@ public class UimaAsThreadFactory impleme
controller = aController;
theThreadGroup = tGroup;
}
-
+ public void setThreadNamePrefix(String prefix) {
+ threadNamePrefix = prefix;
+ }
+ public void setThreadGroup( ThreadGroup tGroup) {
+ theThreadGroup = tGroup;
+ }
+ public void setDaemon(boolean daemon) {
+ isDaemon = daemon;
+ }
public void stop() {
}
@@ -66,8 +86,16 @@ public class UimaAsThreadFactory impleme
try {
newThread = new Thread(theThreadGroup, new Runnable() {
public void run() {
- Thread.currentThread().setName(
- controller.getComponentName() + " Process Thread-"
+ if ( threadNamePrefix == null ) {
+ if ( controller != null ) {
+ threadNamePrefix = THREAD_POOL+poolId+"]
"+controller.getComponentName() + " Process Thread";
+ } else {
+ threadNamePrefix = THREAD_POOL+poolId+"] ";
+ }
+ } else {
+ threadNamePrefix = THREAD_POOL+poolId+"] "+threadNamePrefix;
+ }
+ Thread.currentThread().setName( threadNamePrefix +" - "
+ Thread.currentThread().getId());
try {
if (controller != null && !controller.threadAssignedToAE()) {
@@ -108,6 +136,7 @@ public class UimaAsThreadFactory impleme
"UIMAEE_exception__WARNING", e);
}
}
+ newThread.setDaemon(isDaemon);
return newThread;
}
}