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; } }