构建一个基于事件分发驱动的EventLoop线程模型

Java66

在之前的文章中我们详细介绍过Netty中的NioEventLoop,NioEventLoop从本质上讲是一个事件循环执行器,每个NioEventLoop都会绑定一个对应的线程通过一个 for(;;)循环来处理事件消息。今天我们就借鉴NioEventLoop,并加入消息分发策略构建一个基础的Eventloop线程模型。

整个线程模型可以划分为三部分

事件监听及分发(Event): 监听消息事件并通过分发器分发;

分发器(Dispatch):将消息按照分发策略分发到对应的事件循环器中;

事件循环器 (EventLoop) :绑定一个对应的线程与消息队列,循环处理消息;

模型图如下所示

构建一个基于事件分发驱动的EventLoop线程模型

事件监听器把监听到的事件交给分发器进行分发,分发器根据一定的分发策略把消息事件分发至对应的Eventloop的消息事件队列中,每个EventLoop内部会启动一个线程轮询队列中的消息事件并进行处理;

下面结合代码看下具体实现

一、事件监听及分发

输入验证码查看隐藏内容

扫描二维码关注本站微信公众号 Johngo学长
或者在微信里搜索 Johngo学长
回复 svip 获取验证码
wechat Johngo学长

相关文章
Java

java的collection类

collection来源于java.util包。 Collection 接口常用的方法 size():返回集合中元素的个数 add(Object obj):向集合中添加一个元素 addAll(Coll...
Java

cookie+拦截器实现不同角色对应不同的登录页

问题描述 问题描述:由于业务需求,系统中有 A角色需要看A登录页、B角色需要看B登录页面。注意是同一个系统哦。现在问题来了,有同学可能会回答了,这样就太简单了,A角色直接访问A登录页,B角色直接访问B...
Java

Java学习 (14) Java方法篇(01)方法定义和调用

方法的定义 方法的组成结构 语法实例 方法的调用 语法实例 方法的定义 Java的方法类似于其它语言的函数,是一段用来完成特定功能的代码片段 *方法包含一个方法头和一个方法体。 方法的组成结构 修饰符...
Java

期末代码

使用Java的输入输出流将一个文本文件的内容按行读出,每读出一行,就顺序添加行号,并写入到另一个文件中。 ```java import java.io.*; public class E { publ...
Java

数组扩展(Java)

Arrays类 基本介绍 数组的工具类java.util.Arrays 由于数组本身中没有什么方法可供我们调用,但API中提供了一个工具类Arrays供我们使用,从而可以对数据对象进行一些基本操作 查...
Java

||运算你真的了解吗?

或运算介绍 或运算:只要有一个条件为true,即为true。 通过如上逻辑关系图,还有另外一层 隐含的意思: 如果A条件是true,B条件不执行! 如果A条件是false,B条件要执行! 下面我们来看...
Java

用户后台管理

User Management 这是通过SpringBoot完成的用户后台管理系统 一些解释说明也在代码里面, 源码及资源 会放在文末哦!!! - 这是效果图 大概就这些功能不多 ; 1.登录拦截器 ...
Java

Java se

一些需要注意的点 ConcurrentHashMap CAS是乐观锁 CopyOnWriteArrayList的add方法
Java

opencv-python函数

opencv-python读取、展示和存储图像 cv2.imshow(windows_name, image) 函数参数一: 窗口名称(字符串) 函数参数二: 图像对象,类型是numpy中的ndarr...