package org.mobicents.jsr309.mgcp; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import java.util.concurrent.ThreadFactory; import java.util.concurrent.atomic.AtomicInteger; /** * * @author amit bhayani * */ public class Provider { private static transient ExecutorService pool = Executors.newFixedThreadPool(10, new ThreadFactoryImpl()); public Provider() { } public static void submit(Runnable task) { pool.submit(task); } static class ThreadFactoryImpl implements ThreadFactory { final ThreadGroup group; static final AtomicInteger msProviderPoolNumber = new AtomicInteger(1); final AtomicInteger threadNumber = new AtomicInteger(1); final String namePrefix; ThreadFactoryImpl() { SecurityManager s = System.getSecurityManager(); group = (s != null) ? s.getThreadGroup() : Thread.currentThread().getThreadGroup(); namePrefix = "MsProviderImpl-FixedThreadPool-" + msProviderPoolNumber.getAndIncrement() + "-thread-"; } 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; } } }