<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    云自無心水自閑

    天平山上白云泉,云自無心水自閑。何必奔沖山下去,更添波浪向人間!
    posts - 288, comments - 524, trackbacks - 0, articles - 6
      BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理

    Netty insight

    Posted on 2014-11-21 14:18 云自無心水自閑 閱讀(532) 評論(0)  編輯  收藏
    Netty
    1. there're 2 EventLoopGroup in netty, bossGroup and workerGroup, (1 implementation NioEventLoopGroup is a kind of thread pool)
    2. bossGroup is Acceptor,is responsible for creating Channels for incoming connection requests
    3. workerGroup is the Reactor/Selector?, handling I/O requests. 
    4. a thread in bossGroup will be listening in the port, Once a connection has been accepted workerGroup assigns an EventLoop to its Channel
    5. multiple channels can be registered into 1 EventLoop, multiple EventLoops will exist in workerGroup
    6. workerGroup will iterate all the EventLoop, and iterate all the channels in EventLoop, if any of the channel is ready to execute/process
    7. it will invoke all the channelHandlers in the channelPipeline
    8. ChannelPipelines are containers for chains of ChannelHandlers which executed in order
    9. There are, in fact, two ways of sending messages in Netty. You can write directly to the Channel or write to the ChannelHandlerContext object. The main difference is that the former approach causes the message to start from the tail of the ChannelPipeline, while the latter causes the message to start from the next handler in the ChannelPipeline.
    10. While the I/O thread must not be blocked at all, thus prohibiting any direct blocking operations within your ChannelHandler, there is a way to implement this requirement.
    You can specify an EventExecutorGroup when adding ChannelHandlers to the ChannelPipeline.
    This EventExecutorGroup will then be used to obtain an EventExecutor, which will execute all the methods of the ChannelHandler.
    This EventExecutor will use a different thread from the I/O thread, thus freeing up the EventLoop.

    Channel ch = ...;
    ChannelPipeline p = ch.pipeline();
    EventExecutor e1 = new DefaultEventExecutor(16);
    EventExecutor e2 = new DefaultEventExecutor(8);
     
    p.addLast(new MyProtocolCodec());
    p.addLast(e1, new MyDatabaseAccessingHandler());
    p.addLast(e2, new MyHardDiskAccessingHandler());

    http://stackoverflow.com/questions/12928723/netty-4-eventloopgroup-eventloop-eventexecutor-thread-affinity



    只有注冊用戶登錄后才能發表評論。


    網站導航:
     
    主站蜘蛛池模板: 成年在线观看免费人视频草莓| 亚洲成a人片在线观看播放| 亚洲精品无码久久不卡| 国产精品亚洲综合| 在线观看片免费人成视频无码| 成年性生交大片免费看| 亚洲jjzzjjzz在线观看| 免费人成在线观看视频高潮| 亚洲中文字幕无码中文字在线| 亚洲色成人四虎在线观看| 好猛好深好爽好硬免费视频| 国产成人无码免费看视频软件| 亚洲毛片αv无线播放一区| 亚洲日本成本人观看| 99视频在线免费看| 国产乱辈通伦影片在线播放亚洲| 亚洲国产视频久久| 三年片在线观看免费观看大全动漫| 免费无码看av的网站| 亚洲色成人网一二三区| 久久久久国色AV免费观看| 国产精品亚洲A∨天堂不卡| 老司机精品视频免费| 无码视频免费一区二三区| 亚洲爆乳少妇无码激情| 久久久高清免费视频| 日本久久久久亚洲中字幕| 国产又黄又爽胸又大免费视频| 性做久久久久免费看| 亚洲人成在线免费观看| 久久久久免费看成人影片| 国产精品高清视亚洲一区二区| 免费一区二区视频| 国产精品亚洲一区二区三区久久 | 亚洲精品成人久久| 国产成人精品一区二区三区免费| 亚洲情a成黄在线观看| 亚欧日韩毛片在线看免费网站| 亚洲中文精品久久久久久不卡| 久久精品国产精品亚洲艾草网美妙| 久久国产精品免费看|