thread其实构建的是一个zookeeperThread线程,并且线程的参数为this,表示当前NIOServerCnxnFactory也是实现了线程的类,那么它必须要重写
run方法,因此定位到NIOServerCnxnFactory.run。
到此,NIOServer的初始化以及启动过程就完成了。并且对2181的这个端口进行监听。一旦发现有请求进来,就执行相应的处理即可。这块后续在分析数据同步的时候再做详细了解
Thread thread;
@Override
public void configure(InetSocketAddress addr,int maxcc) throws IOException {
configureSaslLogin();
thread = new ZooKeeperThread(this,
"NIOServerCxn.Factory:" + addr);
thread.setDaemon(true);
maxClientCnxns = maxcc;
this.ss = ServerSocketChannel.open();
ss.socket().setReuseAddress(true);
LOG.info("binding to port " + addr);
ss.socket().bind(addr);
ss.configureBlocking(false);
ss.register(selector,
SelectionKey.OP_ACCEPT);
}