![JAR search and dependency download from the Maven repository](/logo.png)
com.github.ltsopensource.nio.loop.FixedNioSelectorLoopPool Maven / Gradle / Ivy
package com.github.ltsopensource.nio.loop;
import com.github.ltsopensource.nio.processor.NioProcessor;
import java.util.concurrent.atomic.AtomicInteger;
/**
* @author Robert HG ([email protected]) on 1/24/16.
*/
public class FixedNioSelectorLoopPool implements NioSelectorLoopPool {
private final NioSelectorLoop[] pool;
private final AtomicInteger nextIndex = new AtomicInteger();
public FixedNioSelectorLoopPool(final int size, String prefix, NioProcessor processor) {
if (size <= 0) {
throw new IllegalArgumentException("We can't create a pool with no Selectorloop in it");
}
pool = new NioSelectorLoop[size];
for (int i = 0; i < size; i++) {
NioSelectorLoop selectorLoop = new NioSelectorLoop(prefix + "-NioSelectorLoop-I/O-" + i, processor);
pool[i] = selectorLoop;
selectorLoop.start();
}
}
@Override
public NioSelectorLoop getSelectorLoop() {
return pool[Math.abs(nextIndex.incrementAndGet() % pool.length)];
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy