Netty 5.0.0 closeFuture()。sync()永远不会完成

时间:2017-02-15 17:40:53

标签: java netty

我目前正在使用Netty编写Java程序,在那里我偶然发现了以下问题:

每当我尝试在“bootstrap”完成后使用channel#closeFuture()。sync()时,它永远不会完成任务并永远锁定主线程。没有任何例外。

我的发布代码:

 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();
 }

2 个答案:

答案 0 :(得分:1)

这是按预期工作的,closeFuture()是将在渠道关闭时完成的未来。这意味着如果频道尚未关闭,则未来将永远不会完成,sync()将无限期阻止。

答案 1 :(得分:0)

修正了它,根本没有任何问题,我的结果是愚蠢的。