zoukankan      html  css  js  c++  java
  • 1 Netty--异步和事件驱动

     

     

     

     回调函数就是一个通过函数指针调用的函数。如果你把函数的指针(地址)作为参数传递给另一个函数,当这个指针被用来调用其所指向的函数时,我们就说这是回调函数。

    闭包包含自由(未绑定到特定对象)变量,这些变量不是在这个代码块内或者任何全局上下文中定义的,而是在定义代码块的环境中定义(局部变量)。“闭包” 一词来源于以下两者的结合:要执行的代码块(由于自由变量被包含在代码块中,这些自由变量以及它们引用的对象没有被释放)和为自由变量提供绑定的计算环境(作用域)。

    闭包就是一个代码块,用“{ }”包起来。此时,程序代码也就成了数据,可以被一个变量所引用(与C语言的函数指针比较类似)。

    闭包的最典型的应用是实现回调函数(callback)。

    public class ConnectExample {
        private static final Channel CHANNEL_FROM_SOMEWHERE = new NioSocketChannel();
    
        /**
         * 代码清单 1-3 异步地建立连接
         *
         * 代码清单 1-4 回调实战
         * */
        public static void connect() {
            Channel channel = CHANNEL_FROM_SOMEWHERE; //reference form somewhere
            // Does not block
            //异步地连接到远程节点
            ChannelFuture future = channel.connect(new InetSocketAddress("127.0.0.1", 3333));
            //注册一个 ChannelFutureListener,以便在操作完成时获得通知
            future.addListener(new ChannelFutureListener() {
                @Override
                public void operationComplete(ChannelFuture future) {
                    //检查操作的状态
                    if (future.isSuccess()) {
                        System.out.println("ok");
                        //如果操作是成功的,则创建一个 ByteBuf 以持有数据
                        ByteBuf buffer = Unpooled.copiedBuffer("Hello
    ", Charset.defaultCharset());
                        //将数据异步地发送到远程节点。返回一个 ChannelFuture
                        ChannelFuture wf = future.channel().writeAndFlush(buffer);
                        // ...
                    } else {
                        //如果发生错误,则访问描述原因的 Throwable
                        Throwable cause = future.cause();
                        cause.printStackTrace();
                    }
                }
            });
        }
        public static void main(String[] args){
            ConnectExample.connect();
        }
    
    }

  • 相关阅读:
    cookie、 sessionStorage 、localStorage之间的区别和使用
    CSS清除浮动大全共8种方法
    需要了解的前端常用js库
    let与const的区别
    java webservice的多种实现方法汇总
    iframe和frame的区别
    Iframe的应用以及父窗口和子窗口的相互访问
    HTML5标签改变
    flex之组件简单应用
    Flex控件之repeater和radioButton应用
  • 原文地址:https://www.cnblogs.com/lakeslove/p/13052548.html
Copyright © 2011-2022 走看看