netty 學習記錄一

來源:互聯網
上載者:User

標籤:netty

最近在學習netty相關知識,覺得《netty 權威指南》這本書還是挺好的,適合我這種初學者.加上netty本身內建的許多例子,學起來還是挺有興趣的.簡單記錄下,

一般伺服器代碼如下:

 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 權威指南》這本書, 下面的代碼應該比較容易懂,正如它的名字一樣,一個叫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() ;  線程同步阻塞等待伺服器綁定到指定連接埠,

...channel().closeFuture().sync() 成功綁定到連接埠之後,給channel增加一個 管道關閉的監聽器並同步阻塞,直到channel關閉,線程才會往下執行,結束進程。





netty 學習記錄一

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.