Java Netty 5.0.0 closeFuture().sync()从未完成
我目前正在使用Netty用Java编写一个程序,无意中发现了以下问题: 每当我尝试在“引导”完成后使用通道#closeFuture().sync(),它就永远不会完成任务并永远锁定主线程。没有抛出任何异常 我的启动代码:Java Netty 5.0.0 closeFuture().sync()从未完成,java,netty,Java,Netty,我目前正在使用Netty用Java编写一个程序,无意中发现了以下问题: 每当我尝试在“引导”完成后使用通道#closeFuture().sync(),它就永远不会完成任务并永远锁定主线程。没有抛出任何异常 我的启动代码: EventLoopGroup bossGroup = new NioEventLoopGroup(); EventLoopGroup workerGroup = new NioEventLoopGroup(); try { ServerBootstrap ser
EventLoopGroup bossGroup = new NioEventLoopGroup();
EventLoopGroup workerGroup = new NioEventLoopGroup();
try {
ServerBootstrap serverBootstrap = new ServerBootstrap();
serverBootstrap.group(bossGroup, workerGroup);
serverBootstrap.channel(NioServerSocketChannel.class);
serverBootstrap.childHandler(new IOLauncher());
this.channel = serverBootstrap.bind(8192).sync().channel();
System.out.println("Debug; closeFuture");
this.channel.closeFuture().sync(); // This never finishes!
System.out.println("Debug; closeFuture done");
} catch (Exception e) {
e.printStackTrace();
} finally {
bossGroup.shutdownGracefully();
workerGroup.shutdownGracefully();
}
按照预期工作,
closeFuture()
是一个在频道关闭时完成的未来。这意味着,如果频道尚未关闭,则未来将永远不会结束,sync()
将无限期阻塞。按照预期工作,closeFuture()
是在频道关闭时完成的未来。这意味着,如果频道没有关闭,未来将永远不会结束,sync()
将无限期阻塞。修复了它,没有任何问题,这是一个愚蠢的问题。修复了它,根本没有任何问题,这对我来说是一件愚蠢的事情。这是否意味着我不必使用channel#closeFuture?您当前如何使用它是预期的用例,以便在服务器关闭时,主线程可以通过等待关闭来清理。但是,这意味着其他线程必须在某个时间点开始关闭。这是否意味着我不必使用通道#closeFuture?您当前如何使用它是预期的用例,以便主线程可以在服务器关闭时通过等待关闭来清理。但是,这意味着其他线程必须在某个时间点开始关闭。仅供参考:netty 5已被弃用。您可能会考虑迁移到NETY 4.1,然后在5FYI中投入太多时间:NETY 5被否决。您可能会考虑迁移到NETY 4.1,在5之前投入太多的时间。