在之前的文章中我们详细介绍过Netty中的NioEventLoop,NioEventLoop从本质上讲是一个事件循环执行器,每个NioEventLoop都会绑定一个对应的线程通过一个 for(;;)
循环来处理事件消息。今天我们就借鉴NioEventLoop,并加入消息分发策略构建一个基础的Eventloop线程模型。
整个线程模型可以划分为三部分
事件监听及分发(Event): 监听消息事件并通过分发器分发;
分发器(Dispatch):将消息按照分发策略分发到对应的事件循环器中;
事件循环器 (EventLoop) :绑定一个对应的线程与消息队列,循环处理消息;
模型图如下所示
事件监听器把监听到的事件交给分发器进行分发,分发器根据一定的分发策略把消息事件分发至对应的Eventloop的消息事件队列中,每个EventLoop内部会启动一个线程轮询队列中的消息事件并进行处理;
下面结合代码看下具体实现
一、事件监听及分发
相关文章
Seata源码分析——AT模式底层实现
GlobalTransactionScanner 继承AbstractAutoProxyCreator 实现InitializingBean接口 写在最后 以AT为例,我们使用Seata时只需要在全局...
java的collection类
collection来源于java.util包。 Collection 接口常用的方法 size():返回集合中元素的个数 add(Object obj):向集合中添加一个元素 addAll(Coll...
关于ASP.NET WEB API(OWIN WEBAPI)的几个编码最佳实践总结
近期工作比较忙,确实没太多精力与时间写博文,博文写得少,但并不代表没有研究与总结,也不会停止我继续分享的节奏,最多有可能发博文间隔时间稍长一点。废话不多说,直接上干货,虽不是主流的ASP.NET CO...
cookie+拦截器实现不同角色对应不同的登录页
问题描述 问题描述:由于业务需求,系统中有 A角色需要看A登录页、B角色需要看B登录页面。注意是同一个系统哦。现在问题来了,有同学可能会回答了,这样就太简单了,A角色直接访问A登录页,B角色直接访问B...
Java学习 (14) Java方法篇(01)方法定义和调用
方法的定义 方法的组成结构 语法实例 方法的调用 语法实例 方法的定义 Java的方法类似于其它语言的函数,是一段用来完成特定功能的代码片段 *方法包含一个方法头和一个方法体。 方法的组成结构 修饰符...
整合redis并完成短信验证服务
添加依赖 com.tencentcloudapi tencentcloud-sdk-java 3.1.509 org.springframework.boot spring-boot-starter-...
Android 虹软人脸识别SDK-人脸对比
准备 : 登录官方网站,获取SDK,进行个人验证后新建项目,获取APP_ID,和SDK_KEY; https://ai.arcsoft.com.cn/ucenter/resource/build/in...
SpringCloud微服务实战——搭建企业级开发框架(三十五):SpringCloud + Docker + k8s实现微服务集群打包部署-集群环境部署
一、集群环境规划配置 生产环境不要使用一主多从,要使用多主多从。这里使用三台主机进行测试一台Master(172.16.20.111),两台Node(172.16.20.112和172.16.20.1...
数组扩展(Java)
Arrays类 基本介绍 数组的工具类java.util.Arrays 由于数组本身中没有什么方法可供我们调用,但API中提供了一个工具类Arrays供我们使用,从而可以对数据对象进行一些基本操作 查...
||运算你真的了解吗?
或运算介绍 或运算:只要有一个条件为true,即为true。 通过如上逻辑关系图,还有另外一层 隐含的意思: 如果A条件是true,B条件不执行! 如果A条件是false,B条件要执行! 下面我们来看...
浅谈Java-String到底是值传递还是引用传递?
参数传递 Java 中的参数传递分为 "值传递""引用传递" 如果你学过 C/C++应该很好理解,就是所谓的 "值传递" 和 "指针传递" 值传递 在 Java 中,"值传递" 就是传递真实值的一个副...
opencv-python函数
opencv-python读取、展示和存储图像 cv2.imshow(windows_name, image) 函数参数一: 窗口名称(字符串) 函数参数二: 图像对象,类型是numpy中的ndarr...