zoukankan      html  css  js  c++  java
  • netty 学习记录一

    近期在学习netty相关知识,认为《netty 权威指南》这本书还是挺好的,适合我这样的刚開始学习的人.加上netty本身自带的很多样例,学起来还是挺有兴趣的.简单记录下,

    一般server代码例如以下:

     public void run() throws Exception {
            EventLoopGroup bossGroup = new NioEventLoopGroup();
            EventLoopGroup workerGroup = new NioEventLoopGroup();
            try {
                ServerBootstrap b = new ServerBootstrap();
                b.group(bossGroup, workerGroup)
                 .channel(NioServerSocketChannel.class)
                 .childHandler(new ChannelInitializer<SocketChannel>() {
                    @Override
                    public void initChannel(SocketChannel ch) throws Exception {
                        ch.pipeline().addLast(
                                new ObjectEncoder(),
                                new ObjectDecoder(ClassResolvers.cacheDisabled(null)),
                                new ObjectEchoServerHandler(),
                                new MyServerHandler());
                    }
                 });
    
                // Bind and start to accept incoming connections.
                b.bind(port).sync().channel().closeFuture().sync();
                
            } finally {
                bossGroup.shutdownGracefully();
                workerGroup.shutdownGracefully();
            }
        }

    看过 《netty 权威指南》这本书, 以下的代码应该比較easy懂,正如它的名字一样,一个叫bossGroup(老板),一个叫workerGroup(工人),bossGroup用于接受请求的线程组,workerGroup用于处理IO操作线程组,bossGroup收到请求之后叫workerGroup去处理,

    EventLoopGroup bossGroup = new NioEventLoopGroup();
    EventLoopGroup workerGroup = new NioEventLoopGroup();


    ServerBootstrap 是一个启动工具类,childHandler()方法用于往里面增加处理channel的操作类,并初始化它们. ChannelPipeline用于链式管理内部的channel处理类.

    b.bind(port).sync().channel().closeFuture().sync();  这句话拆成以下两句好理解点:

    b.bind(port).sync() ;  线程同步堵塞等待server绑定到指定端口,

    ...channel().closeFuture().sync() 成功绑定到port之后,给channel添加一个 管道关闭的监听器并同步堵塞,直到channel关闭,线程才会往下运行,结束进程。





  • 相关阅读:
    Struts2框架(二)
    Struts2框架(一)
    jsp定义全局的错误处理
    BeanUtils的使用、Java中的路径问题
    IntelliJ IDEA 14.1.4(Window)快捷键
    Log4J日志组件
    注解
    反射
    泛型
    AndroidStudio开发工具快捷键(转)
  • 原文地址:https://www.cnblogs.com/gcczhongduan/p/5213097.html
Copyright © 2011-2022 走看看