Method from org.apache.activemq.transport.nio.SelectorManager Detail: |
protected ExecutorService createDefaultExecutor() {
ThreadPoolExecutor rc = new ThreadPoolExecutor(0, Integer.MAX_VALUE, 10, TimeUnit.MILLISECONDS, new SynchronousQueue< Runnable >(), new ThreadFactory() {
public Thread newThread(Runnable runnable) {
return new Thread(runnable, "ActiveMQ NIO Worker");
}
});
// rc.allowCoreThreadTimeOut(true);
return rc;
}
|
public Executor getChannelExecutor() {
return channelExecutor;
}
|
public static SelectorManager getInstance() {
return SINGLETON;
}
|
public int getMaxChannelsPerWorker() {
return maxChannelsPerWorker;
}
|
public Executor getSelectorExecutor() {
return selectorExecutor;
}
|
public synchronized void onWorkerEmptyEvent(SelectorWorker worker) {
freeWorkers.remove(worker);
}
|
synchronized void onWorkerFullEvent(SelectorWorker worker) {
freeWorkers.remove(worker);
}
|
public synchronized void onWorkerNotFullEvent(SelectorWorker worker) {
freeWorkers.addFirst(worker);
}
|
public synchronized SelectorSelection register(SocketChannel socketChannel,
Listener listener) throws IOException {
SelectorSelection selection = null;
while( selection == null ) {
if (freeWorkers.size() > 0) {
SelectorWorker worker = freeWorkers.getFirst();
if( worker.isReleased() ) {
freeWorkers.remove(worker);
} else {
worker.retain();
selection = new SelectorSelection(worker, socketChannel, listener);
}
} else {
// Worker starts /w retain count of 1
SelectorWorker worker = new SelectorWorker(this);
freeWorkers.addFirst(worker);
selection = new SelectorSelection(worker, socketChannel, listener);
}
}
return selection;
}
|
public void setChannelExecutor(Executor channelExecutor) {
this.channelExecutor = channelExecutor;
}
|
public void setMaxChannelsPerWorker(int maxChannelsPerWorker) {
this.maxChannelsPerWorker = maxChannelsPerWorker;
}
|
public void setSelectorExecutor(Executor selectorExecutor) {
this.selectorExecutor = selectorExecutor;
}
|