Java 当netty连接到我的服务器时?

Java 当netty连接到我的服务器时?,java,netty,Java,Netty,我正在使用此处编写的Channle pool API代码: ChannelPool部分 EventLoopGroup组=新的NioEventLoopGroup(); 最终引导cb=新引导(); InetSocketAddress addr1=新的InetSocketAddress(“10.0.0.10”,8888); InetSocketAddress addr2=新的InetSocketAddress(“10.0.0.11”,8888); cb.group(group.channel)(Nio

我正在使用此处编写的Channle pool API代码:

ChannelPool
部分

EventLoopGroup组=新的NioEventLoopGroup();
最终引导cb=新引导();
InetSocketAddress addr1=新的InetSocketAddress(“10.0.0.10”,8888);
InetSocketAddress addr2=新的InetSocketAddress(“10.0.0.11”,8888);
cb.group(group.channel)(NioSocketChannel.class);
ChannelPoolMap poolMap=新的AbstractChannelPoolMap(){
@凌驾
受保护的SimpleChannelPool新池(InetSocketAddress密钥){
返回新的SimpleChannelPool(cb.remoteAddress(键),新的TestChannelPoolHandler());
}
};
//根据您使用addr1或addr2的时间,您将获得不同的池。
最终的SimpleChannelPool池=poolMap.get(addr1);
Future f=pool.acquire();
f、 addListener(新的FutureListener(){
@凌驾
公共无效操作完成(未来f){
如果(f.isSuccess()){
通道ch=f.getNow();
//做事
// ...
// ...
//释放回池中
释放池(ch);
}
}
});

正如我看到的代码,我们从未调用过
.connect
方法,所以我的问题是,当netty尝试将我的频道连接到服务器时?

当您使用SimpleChannelPool时,它会在调用acquire时进行连接,而频道池中没有任何内容。

为什么-1至少有人能解释一下?
EventLoopGroup group = new NioEventLoopGroup();
final Bootstrap cb = new Bootstrap();
InetSocketAddress addr1 = new InetSocketAddress("10.0.0.10", 8888);
InetSocketAddress addr2 = new InetSocketAddress("10.0.0.11", 8888);

cb.group(group).channel(NioSocketChannel.class);

ChannelPoolMap<InetSocketAddress, SimpleChannelPool> poolMap = new AbstractChannelPoolMap<InetSocketAddress, SimpleChannelPool>() {
    @Override
    protected SimpleChannelPool newPool(InetSocketAddress key) {
        return new SimpleChannelPool(cb.remoteAddress(key), new TestChannelPoolHandler());
    }
};

// depending on when you use addr1 or addr2 you will get different pools.
final SimpleChannelPool pool = poolMap.get(addr1);
Future<Channel> f = pool.acquire();
f.addListener(new FutureListener<Channel>() {
    @Override
    public void operationComplete(Future<Channel> f) {
        if (f.isSuccess()) {
            Channel ch = f.getNow();
            // Do somethings
            // ...
            // ...

            // Release back to pool
            pool.release(ch);
        }
    }
});