今天看源代码,发现netty4.0在生成EventExecutorLoopGroup(线程池)时,初始化EventExecutor(执行的线程)时,初始化一个eventExecutor的选择器
protected MultithreadEventExecutorGroup(int nThreads, ThreadFactory threadFactory, Object... args) {
if (nThreads <= 0) {
throw new IllegalArgumentException(String.format("nThreads: %d (expected: > 0)", nThreads));
}
if (threadFactory == null) {
threadFactory = newDefaultThreadFactory();
}
children = new SingleThreadEventExecutor[nThreads];
//这里是主要说明一下,根据初始化线程池的大小判断线程选择器是哪个,EventExecutorChooser是内部的接口,外部无法访问
if (isPowerOfTwo(children.length)) {
chooser = new PowerOfTwoEventExecutorChooser();
} else {
chooser = new GenericEventExecutorChooser();
}
for (int i = 0; i < nThreads; i +