package ee.telekom.workflow.util;
import java.util.concurrent.ThreadFactory;
import java.util.concurrent.atomic.AtomicInteger;
public class NamedPoolThreadFactory implements ThreadFactory{
private final ThreadGroup group;
private final AtomicInteger threadNumber = new AtomicInteger( 1 );
private final String namePrefix;
public NamedPoolThreadFactory( String poolName ){
SecurityManager s = System.getSecurityManager();
group = (s != null) ? s.getThreadGroup() :
Thread.currentThread().getThreadGroup();
this.namePrefix = poolName + "-";
}
@Override
public Thread newThread( Runnable r ){
Thread t = new Thread( group, r, namePrefix + threadNumber.getAndIncrement(), 0 );
if( t.isDaemon() ){
t.setDaemon( false );
}
if( t.getPriority() != Thread.NORM_PRIORITY ){
t.setPriority( Thread.NORM_PRIORITY );
}
return t;
}
}