// EventLoopGroup传递SelectorProvider提供者给EventLoop
public class NioEventLoopGroup implements EventExecutorGroup {
...
public NioEventLoopGroup(int nThreads) {
// SelectorProvider提供者
this(nThreads, SelectorProvider.provider());
}
public NioEventLoopGroup(int nThreads, final SelectorProvider selectorProvider) {
this(nThreads == 0 ? DEFAULT_EVENT_LOOP_THREADS : nThreads, selectorProvider, DefaultEventExecutorChooserFactory.INSTANCE);
}
}
// selector的实现: provider.openSelector() 通过提供者返回适配的selector实现
public class NioEventLoop extends SingleThreadEventLoop {
private Selector selector;
private final SelectorProvider provider;
public NioEventLoop(SelectorProvider selectorProvider) {
this.provider = selectorProvider;
this.selector = openSelector();
}
private Selector openSelector() {
try {
return provider.openSelector();
} catch (IOException e) {
throw new ChannelException("failed to open a new selector", e);
}
}
}
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。