文档章节

Netty_EventLoop_EventLoopGroup

秋风醉了
 秋风醉了
发布于 2014/07/01 10:49
字数 318
阅读 321
收藏 0
点赞 0
评论 0

All IO operations in Netty are performed asynchronously. 


Future和ChannelFuture

So when you connect to a host for example,  this  is  done  asynchronously(异步的)  by  default.  The  same  is  true when  you  write/send  a message.  This  means  the operation  may  not  be  performed  directly  but picked up  later  for execution. Because of this you can t know if an operation was successful or not after it returns, but need to be able to check later for success or have some kind of ways to register a listener which is notified. To rectify(纠正) this, Netty uses Futures and ChannelFutures. This future can be used  to  register  a  listener,  which  will  be  notified  when  an  operation  has  either  failed  or completed successfully. 


Netty EventLoop和EventLoopGroup

The  relationship  between  an  EventLoop and  an EventLoopGroup may  not  be immediately(立即马上)  intuitive(直观的),  because  we have  said  that  an EventLoopGroup contains  one or  more EventLoop but  this  diagram  shows  that  in  fact,  an  EventLoop passes  the   is-a EventLoopGroup test,  i.e.  an EventLoop is  an EventLoopGroup.   This means  wherever you can pass in an EventLoopGroup you can also just use a specific(具体的) EventLoop. 


figure  3.1  shows  why  the  design  Netty  uses  to  ensure  no  synchronization(同步)  is required on your part to process Netty events. 

EventLoop Thread relationship 

The EventLoop is always bound to a single Thread that never changed during it s life time. 

When a channel is registered, Netty binds that channel to a single EventLoop(and so to a single thread) for the life time of that Channel. This is why your application doesn t need to synchronize  on  Netty  IO  operations  because  all  IO  for  a  given Channel will  always  be performed by the same thread. 

all  IO  for  a  given Channel will  always  be performed by the same thread. 

=====END=====

© 著作权归作者所有

共有 人打赏支持
秋风醉了
粉丝 228
博文 576
码字总数 405965
作品 0
东城
程序员
第三章:Netty核心概念

这一章我们将讨论Netty的10个核心类。 Bootstrap ServerBootstrap EventLoop EventLoopGroup ChannelPipeline Channel Future ChannelFuture ChannelInitializer ChannelHandler 1.Crash Co......

李矮矮
2016/09/23
46
0
Netty源码分析(一)概览

准备将Netty的源码过一下,一来对自己是个总结消化的过程,二来希望对那些打算看Netty源码的人(已经熟悉Netty的Reactor模型)能有一些帮助。目前所看Netty版本是4.1.3.Final。 1 目录 - Ne...

乒乓狂魔
2016/08/17
334
0
Netty精粹之基于EventLoop机制的高效线程模型

Infoq有篇文章提到通过Netty4+Thrift压缩二进制编码技术有人实现了10W TPS(1K的复杂POJO对象)跨节点远程服务调用,对于RPC应用来说高性能的三个主题永远是IO模型、数据协议、线程模型,10W...

Float_Luuu
2016/02/21
6.9K
5
Netty源码分析(二)EventLoopGroup分析

准备将Netty的源码过一下,一来对自己是个总结消化的过程,二来希望对那些打算看Netty源码的人(已经熟悉Netty的Reactor模型)能有一些帮助。目前所看Netty版本是4.1.3.Final。 1 目录 - Ne...

乒乓狂魔
2016/09/06
421
0
第九章:引导Netty应用程序

本章介绍 引导客户端和服务器 从Channel引导客户端 添加多个ChannelHandler 使用通道选项和属性 上一章学习了编写自己的ChannelHandler和编解码器并将它们添加到Channel的ChannelPipeline中。...

李矮矮
2016/09/26
41
0
【死磕Netty】-----Netty的核心组件

原文出处http://cmsblogs.com/ 『chenssy』 转载请注明原创出处,谢谢! 在第一篇博客中(【死磕Netty】—–NIO基础详解),那一大坨的服务端、客户端代码各位应该看着都会害怕。博主在 15 年写...

chenssy
2017/12/03
0
0
【死磕Netty】—–Netty的核心组件

原文出处http://cmsblogs.com/ 『chenssy』 转载请注明原创出处,谢谢! 在第一篇博客中(【死磕Netty】-----NIO基础详解),那一大坨的服务端、客户端代码各位应该看着都会害怕。博主在 15 年...

chenssy
2017/12/03
0
0
netty高性能浅析

最近在看内部的rpc框架,感觉rpc最重要的就是高效的网络传输,所以学习netty的使用和原理极其重要,于是把netty的基础再总结一下。 首先我们先来看一下netty中的概念,熟悉了基本概念后再来进...

KKys
2017/08/30
0
0
Netty in Action ——— Netty的组件和设计

本文是Netty文集中“Netty in action”系列的文章。主要是对Norman Maurer and Marvin Allen Wolfthal 的 《Netty in action》一书简要翻译,同时对重要点加上一些自己补充和扩展。 本章涵盖...

tomas家的小拨浪鼓
2017/11/06
0
0
【死磕Netty】—–服务端启动过程分析

原文出处http://cmsblogs.com/ 『chenssy』 转载请注明原创出处,谢谢! 上篇博客(【死磕Netty】----Netty的核心组件及其设计),了解了 Netty 的核心组件及其设计,但是这些都是零散的,不成...

chenssy
2017/12/04
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

垃圾回收算法

一 如何判断对象可以回收 1 引用计数法 思路大概为:给对象添加一个引用计数器,每当有一个地方引用它时,计数器值加1;当引用失效时,计数器减1;任何时刻计算器为0的对象就是不可能再被使用...

sen_ye
7分钟前
0
0
Activiti简介(学习总结一)

一、介绍 activiti是使用命令模式设计基于bpmn2.0的一款开源工作流引擎。 工作流简单举例:提交请假申请->经理审批->结束。这就是一个简单流程。activiti支持用户自定义流程。配置各个流程对...

沙shasha
8分钟前
0
0
VCL界面控件DevExpress VCL Controls发布v18.1.3|附下载

DevExpress VCL Controls是 Devexpress公司旗下最老牌的用户界面套包。所包含的控件有:数据录入,图表,数据分析,导航,布局,网格,日程管理,样式,打印和工作流等,让您快速开发出完美、...

Miss_Hello_World
9分钟前
0
0
加米谷大数据培训:云计算、大数据和人工智能之间的关系

一般谈云计算的时候会提到大数据、谈人工智能的时候会提大数据、谈人工智能的时候会提云计算……感觉三者之间相辅相成又不可分割。 一、云计算最初的目标 云计算最初的目标是对资源的管理,管...

加米谷大数据
14分钟前
1
0
java集合元素的默认大小

当底层实现涉及到扩容时,容器或重新分配一段更大的连续内存(如果是离散分配则不需要重新分配,离散分配都是插入新元素时动态分配内存),要将容器原来的数据全部复制到新的内存上,这无疑使...

竹叶青出于蓝
16分钟前
1
0
Java快速开发平台,JEECG 3.7.7闪电版本发布,增加多套主流UI代码生成器模板

JEECG 3.7.7 闪电版本发布,提供5套主流UI代码生成器模板 导读 ⊙平台性能优化,速度闪电般提升 ⊙提供5套新的主流UI代码生成器模板(Bootstrap表单+BootstrapTable列表\ ElementUI列表表单)...

Jeecg
19分钟前
0
0
export 和 module.export 的区别

在浏览器端 js 里面,为了解决各模块变量冲突等问题,往往借助于 js 的闭包把左右模块相关的代码都包装在一个匿名函数里。而 Nodejs 编写模块相当的自由,开发者只需要关注 require,exports,...

孟飞阳
21分钟前
1
0
技术教育的兴起

技术教育的兴起 作者: 阮一峰 1、 有一年,我在台湾环岛旅行。 花莲的海边,我遇到一对台湾青年夫妻,带着女儿在海滩上玩。我们聊了起来。 当时,我还在高校当老师。他们问我,是否觉得台湾...

吕伯文
22分钟前
0
0
Linux服务器下的HTTP抓包分析

说到抓包分析,最简单的办法莫过于在客户端直接安装一个Wireshark或者Fiddler了,但是有时候由于客户端开发人员(可能是第三方)知识欠缺或者其它一些原因,无法顺利的在客户端进行抓包分析,...

mylxsw
26分钟前
0
0
mybatis3-javaapi

sqlSessionFactoryBuilder->sqlSessionFactory->sqlSession<-rowbound<-resultHandler myBatis uses a Java enumeration wrapper for transaction isolation levels, called TransactionIsol......

writeademo
29分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部