当我尝试使用 closeFuture() 关闭 io.netty.channel.Channel 时,Netty 应用程序挂起
Posted
技术标签:
【中文标题】当我尝试使用 closeFuture() 关闭 io.netty.channel.Channel 时,Netty 应用程序挂起【英文标题】:Netty app hangs when I try to close a io.netty.channel.Channel using closeFuture() 【发布时间】:2014-08-05 21:23:52 【问题描述】:当我尝试关闭 io.netty.channel.Channel TCP/IP 客户端连接时,我的 Netty 应用程序挂起。
我愿意:
ch.isOpen(); //this is TRUE
ch.closeFuture().sync(); //never returns
调用同步的线程的堆栈跟踪在这里。
JavaFX Application Thread@583, prio=5, in group 'main', status: 'WAIT'
at java.lang.Object.wait(Object.java:-1)
at java.lang.Object.wait(Object.java:502)
at io.netty.util.concurrent.DefaultPromise.await(DefaultPromise.java:260)
at io.netty.channel.DefaultChannelPromise.await(DefaultChannelPromise.java:129)
at io.netty.channel.DefaultChannelPromise.await(DefaultChannelPromise.java:28)
at io.netty.util.concurrent.DefaultPromise.sync(DefaultPromise.java:224)
at io.netty.channel.DefaultChannelPromise.sync(DefaultChannelPromise.java:117)
at io.netty.channel.DefaultChannelPromise.sync(DefaultChannelPromise.java:28)
at MyClient.stop(MyClient.java:46)
有什么东西可以阻止频道关闭吗?我可以用另一种方式强制它关闭吗?
【问题讨论】:
Bootstrap b = new Bootstrap(); b.bind(port).sync().channel().closeFuture().await();
通常你将一个通道绑定到引导程序。
【参考方案1】:
closeFuture.sync() 不是用于关闭 Channel,而是允许您阻塞直到 Channel 关闭。要关闭 Channel,您可以调用 Channel.close()。
【讨论】:
完全正确!我以为我也尝试过 close() 但显然不是因为它像宣传的那样工作。非常感谢。以上是关于当我尝试使用 closeFuture() 关闭 io.netty.channel.Channel 时,Netty 应用程序挂起的主要内容,如果未能解决你的问题,请参考以下文章
使用 glutBitmapCharacter() 绘制文本关闭 opengl 程序
如何使用命令提示符 (cmd) 在 Windows 中列出文件。我尝试在 Linux 中使用“ls”,但它显示错误? [关闭]