当前位置: 首页 > 知识库问答 >
问题:

来自 netty.io 的netty示例的代码片段似乎有错误

金昌胤
2023-03-14

代码片段是:

        final ChannelFuture f = ctx.writeAndFlush(time); 
        f.addListener(new ChannelFutureListener() {

            public void operationComplete(ChannelFuture future) {
                assert f == future;
                ctx.close();
            }
        }); 

如果' final channel future f = CTX . writeandflush(time);'会发生什么情况执行速度非常快,因此下一个< code>addListener代码还没有开始。当第一行代码完成时,线程通知所有侦听器操作完成,但在那个时候,根本没有侦听器!之后,添加了一个新的侦听器,但不会再收到通知!

代码源:http://netty.io/wiki/user-guide-for-5.x.html

共有1个答案

景阳曜
2023-03-14

ChannelFuture保留其完成状态,因此,如果在完成后添加了侦听器,则“延迟”添加的侦听器将在添加时立即回调。

请参阅channel future . add listener(GenericFutureListener)的javadoc,特别是注释:

如果这个future已经完成,指定的侦听器会立即得到通知。

请参阅DefaultPromise的impl。延迟侦听器(即在未来完成后添加的侦听器)有自己的处理程序(novfyLateListener)。

 类似资料:
  • 我想向捆绑包中添加一个OSGI片段,在这里添加到“org.eclipse.equinox.http.jetty”,并附带清单。mf如下: 不幸的是,我的代码需要在其他捆绑包中定义的代码,这里是“org.eclipse.jetty.io”。所以我将以下行添加到清单中: 现在,在Eclipse中,代码可以编译了。但是当我启动应用程序时,我得到了以下异常(

  • 这里收集一些比较有意思的Go程序片段。 自重写程序 UNIX/Go语言之父 Ken Thompson 在1983年的图灵奖演讲 Reflections on Trusting Trust 就给出了一个C语言的自重写程序。 最短的C语言自重写程序是 Vlad Taeerov 和 Rashit Fakhreyev 的版本: main(a){printf(a="main(a){printf(a=%c%s

  • 本实例主要是为了解决部分用户输出验证码的时候,未能正确的把验证码响应至HTTP响应的问题。 namespace AppUtilityVerifyCode; class Verify { public static function create($codeStr){ $codeSet = '12346789ABCDEFGHJKLMNPQRTUVWXY';//字符容器

  • 最近,我转用了PhpStorm(及其真棒)。 现在,我正在寻找像Sublime中的jQuery片段。 是的,我知道如何编写它们,但我想知道是否有某种包或已经定义的解决方案。

  • 本文向大家介绍java生成图片验证码的示例代码,包括了java生成图片验证码的示例代码的使用技巧和注意事项,需要的朋友参考一下 给大家分享一款java生成验证码的源码,可设置随机字符串,去掉了几个容易混淆的字符,还可以设置验证码位数,比如4位,6位。当然也可以根据前台验证码的位置大小,设置验证码图片的大小。下边是源码分享,直接看吧,很简单! 创建servlet类 创建工具类 配置 web.xml

  • 我有一个片段显示来自API的数据,但我不想每次调用该片段时都调用API。所以我从一个不同的类进行api调用,并在片段中调用一个方法来更新UI(textViews),但我得到了textViews的null异常,但那里的数据是100% 如果我尝试硬编码textview.settext(“hello”),它可以工作…