private synchronized ThreadModel getDefaultThreadModel() { if (defaultThreadModel == null) { defaultThreadModel = ExecutorThreadModel.getInstance("AnonymousIoService"); } return defaultThreadModel; } @Override
/** * Returns a {@link ExecutorThreadModel} instance for the specified <tt>serviceName</tt>. * Please note that all returned instances will be managed globally; the same instance * will be returned if you specified the same service name. Please try to specify * different names for different services. * * @param serviceName the name of the service that needs thread pooling */ public static ExecutorThreadModel getInstance(String serviceName) { if (serviceName == null) { throw new NullPointerException("serviceName"); } ExecutorThreadModel model; synchronized (service2model) { model = service2model.get(serviceName); if (model == null) { model = new ExecutorThreadModel(serviceName); service2model.put(serviceName, model); } } return model; }
private ExecutorThreadModel(String threadNamePrefix) { this.threadNamePrefix = threadNamePrefix; // Create the default filter defaultFilter = new ExecutorFilter(); ThreadPoolExecutor tpe = (ThreadPoolExecutor) defaultFilter .getExecutor(); final ThreadFactory originalThreadFactory = tpe.getThreadFactory(); ThreadFactory newThreadFactory = new ThreadFactory() { private final AtomicInteger threadId = new AtomicInteger(0); public Thread newThread(Runnable runnable) { Thread t = originalThreadFactory.newThread( new NamePreservingRunnable( runnable, ExecutorThreadModel.this.threadNamePrefix + '-' + threadId.incrementAndGet())); t.setDaemon(true); return t; } }; tpe.setThreadFactory(newThreadFactory); // Set to default. setExecutor(null); }
private IoConnector createConnector() { final DatagramConnector connector = new DatagramConnector(); final DatagramConnectorConfig cfg = connector.getDefaultConfig(); cfg.getSessionConfig().setReuseAddress(true); cfg.setThreadModel(ExecutorThreadModel.getInstance(getClass() .getSimpleName())); return connector; }
connector.addListener(this); final ThreadModel threadModel = ExecutorThreadModel .getInstance("TCP-TURN-Local-Socket"); connector.getDefaultConfig().setThreadModel(threadModel);
ExecutorThreadModel.getInstance( "TCP-Frame-Local-Server-Socket"); connector.getDefaultConfig().setThreadModel(threadModel);
.getInstance(getClass().getSimpleName() + (this.m_controlling ? "-Controlling" : "-Not-Controlling"));
final ThreadModel threadModel = ExecutorThreadModel.getInstance( getClass().getSimpleName() + (this.m_controlling ? "-Controlling-" : "-Not-Controlling-") +
.getInstance("TCP-TURN-Client-" + hashCode()); config.setThreadModel(threadModel);