【Netty 网络通信】EventLoop 事件循环对象 解析

简介: 【1月更文挑战第9天】【Netty 网络通信】EventLoop 事件循环对象 解析

EventLoop 事件循环对象:

EventLoop本质是一个单线程执行器(同时维护了一个Selector),里面有run方法处理Channel上源源不断的IO事件。

EventLoop的继承关系比较复杂:

  • 一条线是继承自j.u.c.ScheduledExecutorsenvice因此包合了线程池中所有的方法。
  • 另一条线是继承自Netty自己的OrderedEventExecutor(有序的事件处理器),提供了booleaninEventLoop(Threadthread)方法判断一个线程是否属于此EventLoop;提供了parent()方法来着看自己属于哪个EventLoopGroup

EventloopGroup 事件循环组:

EventloopGroup是一组EventLoopChannel一般会调用EventLoopGroupregister()方法来绑定其中一EventLoop,后续这个Channel上的io事件都由此EventLoop来处理(保证了io事件处理时的线程安全)

EventloopGroup继承自netty自己的EventExecutorGroup实现了Iterable接口提供遍历EventLoop的能力;另有next()方法获取集合中下一个EventLoop

注意:一般情况下我们并不会直接使用EventLoop而是使用EventloopGroup事件循环组。

  • NioEventLoopGroup:可以执行处理IO事件,普通任务,定时任务。
new NioEventLoopGroup(指定线程数量)

默认的线程数是指定为0,然后比较1当前系统核心数*2之间大小,取较大值。如果指定了线程数量那就按照指定的数创建线程。

NettyRuntime.setAvailableProcessors(指定处理器数量);
NettyRuntime.availableProcessors()

如果不进行设置,默认是CPU的处理器数量。处理器数量在默认情况下会动态调整NioEventLoopGroup创建的线程数量,线程数量对应着EventLoop对象,一个线程对应一个EventLoop对象。

调用NioEventLoopGroupnext()方法,可以循环的获取分组分组中的EventLoop对象。

NettyRuntime.availableProcessors()

如果不进行设置,默认是CPU的处理器数量。处理器数量在默认情况下会动态调整NioEventLoopGroup创建的线程数量,线程数量对应着EventLoop对象,一个线程对应一个EventLoop对象。

调用NioEventLoopGroupnext()方法,可以循环的获取分组分组中的EventLoop对象。

// 设置Netty系统的处理器数量:
NettyRuntime.setAvailableProcessors(1);
// 查看当前Netty处理器数量:
System.out.println(NettyRuntime.availableProcessors());
// 创建NioEventLoopGroup对象:
NioEventLoopGroup group = new NioEventLoopGroup();
// 使用next获取group中的EventLoop对象:
for (int i = 0; i < 4; i++) {
    System.out.println(group.next());

  • DefaultEventLoopGroup:可以执行处理普通任务,定时任务。
new DefaultEventLoopGroup(指定线程数量)
相关文章
|
9月前
|
机器学习/深度学习 PyTorch TensorFlow
卷积神经网络深度解析:从基础原理到实战应用的完整指南
蒋星熠Jaxonic,深度学习探索者。深耕TensorFlow与PyTorch,分享框架对比、性能优化与实战经验,助力技术进阶。
|
人工智能 监控 安全
NTP网络子钟的技术架构与行业应用解析
在数字化与智能化时代,时间同步精度至关重要。西安同步电子科技有限公司专注时间频率领域,以“同步天下”品牌提供可靠解决方案。其明星产品SYN6109型NTP网络子钟基于网络时间协议,实现高精度时间同步,广泛应用于考场、医院、智慧场景等领域。公司坚持技术创新,产品通过权威认证,未来将结合5G、物联网等技术推动行业进步,引领精准时间管理新时代。
|
安全 调度
基于Reactor模型的高性能网络库之核心调度器:EventLoop组件
它负责:监听事件(如 I/O 可读写、定时器)、分发事件、执行回调、管理事件源 Channel 等。
522 57
|
10月前
|
机器学习/深度学习 人工智能 算法
卷积神经网络深度解析:从基础原理到实战应用的完整指南
蒋星熠Jaxonic带你深入卷积神经网络(CNN)核心技术,从生物启发到数学原理,详解ResNet、注意力机制与模型优化,探索视觉智能的演进之路。
833 11
|
10月前
|
安全 网络性能优化 网络虚拟化
网络交换机分类与功能解析
接入交换机(ASW)连接终端设备,提供高密度端口与基础安全策略;二层交换机(LSW)基于MAC地址转发数据,构成局域网基础;汇聚交换机(DSW)聚合流量并实施VLAN路由、QoS等高级策略;核心交换机(CSW)作为网络骨干,具备高性能、高可靠性的高速转发能力;中间交换机(ISW)可指汇聚层设备或刀片服务器内交换模块。典型流量路径为:终端→ASW→DSW/ISW→CSW,分层架构提升网络扩展性与管理效率。(238字)
2363 0
|
机器学习/深度学习 人工智能 算法
深度解析:基于卷积神经网络的宠物识别
宠物识别技术随着饲养规模扩大而兴起,传统手段存在局限性,基于卷积神经网络的宠物识别技术应运而生。快瞳AI通过优化MobileNet-SSD架构、多尺度特征融合及动态网络剪枝等技术,实现高效精准识别。其在智能家居、宠物医疗和防走失领域展现广泛应用前景,为宠物管理带来智能化解决方案,推动行业迈向新高度。
1311 66
|
10月前
|
监控 前端开发 安全
Netty 高性能网络编程框架技术详解与实践指南
本文档全面介绍 Netty 高性能网络编程框架的核心概念、架构设计和实践应用。作为 Java 领域最优秀的 NIO 框架之一,Netty 提供了异步事件驱动的网络应用程序框架,用于快速开发可维护的高性能协议服务器和客户端。本文将深入探讨其 Reactor 模型、ChannelPipeline、编解码器、内存管理等核心机制,帮助开发者构建高性能的网络应用系统。
681 0
|
11月前
|
XML JSON JavaScript
从解决跨域CSOR衍生知识 Network 网络请求深度解析:从快递系统到请求王国-优雅草卓伊凡
从解决跨域CSOR衍生知识 Network 网络请求深度解析:从快递系统到请求王国-优雅草卓伊凡
245 0
从解决跨域CSOR衍生知识 Network 网络请求深度解析:从快递系统到请求王国-优雅草卓伊凡
|
开发者
鸿蒙仓颉语言开发教程:网络请求和数据解析
本文介绍了在仓颉开发语言中实现网络请求的方法,以购物应用的分类列表为例,详细讲解了从权限配置、发起请求到数据解析的全过程。通过示例代码,帮助开发者快速掌握如何在网络请求中处理数据并展示到页面上,减少开发中的摸索成本。
鸿蒙仓颉语言开发教程:网络请求和数据解析
|
网络架构
广播域与冲突域:解析网络技术中的复杂性。
总的来说,理解广播域和冲突域的概念可以使我们在设计或维护网络的过程中,更有效地管理通信流程,避免出现网络瓶颈,提成整体网络性能。就像是如何有效地运作一个市场,把每个人的需求和在合适的时间和地点配对,确保每个人的声音都被听到,每个人的需求都被满足。
442 11

推荐镜像

更多
  • DNS