Netty中的线程处理EventLoop
Netty是用什么来处理线程的?
一般线程池化模式为
- 从池的空闲任务列表中选择一个Thread,指派它取运行一个已提交的任务
- 任务完成时,该Thread返回给该列表,使其可以重用
运行任务处理的在编程上的构造通常称作事件循环,Netty使用EventLoop来描述。一个EventLoop将由一个永远不会变的Thread驱动,它可以被指派给多个channel,任务提交给Eventloop之后可以立即执行或者调度执行。任务的执行顺序是以先进先出的顺序执行。
Netty是用什么做任务调度的?
jdk在concurrent包中的ScheduledExecutorService来执行调度,它作为线程管理的一部分,会有额外的线程创建,但是当有大量的任务被紧凑的调度的时候,这有可能成为瓶颈,EventLoop继承了它,而且任务调度不存在这个问题。
要实现延迟执行,只需调用schedule方法即可,要间隔一段时间,每次执行,则调用scheduledAtFixedRate,想要取消调度则是通过返回的scheduledFuture调用cancel
EventLoop的执行逻辑是怎样的?
获取当前的执行线程之后,判断是不是分配给eventLoop的线程,如果是就直接执行,否则放到队列里面稍后执行,这中模式就是Netty线程模式的卓越性,不用关心线程安全和同步相关问题
异步传输和同步传输对eventLoop来讲线程分配有什么不同?
异步传输用的是少量的eventloop,以及与之对应分配的Thread,通过一个线程来支撑多个channel(以此来实现少量线程支撑大量的channel),同步传输则是每个channel一个线程
Netty中的线程处理EventLoop相关推荐
- Netty 源码 — 线程模型的分析
文章目录 Netty 线程模型分析 Reactor 线程模型 Netty 初始化线程池 BossGroup 工作原理 绑定 Channel 事件循环 执行 IO 事件 WorkerGroup 工作 总 ...
- netty源码分析系列——EventLoop
2019独角兽企业重金招聘Python工程师标准>>> 前言 EventLoop也是netty作为一个事件驱动架构的网络框架的重要组成部分,netty主要通过它来实现异步编程,从前面 ...
- netty中的future和promise源码分析(二)
前面一篇netty中的future和promise源码分析(一)中对future进行了重点分析,接下来讲一讲promise. promise是可写的future,从future的分析中可以发现在其中没 ...
- Netty中的那些坑
Netty中的那些坑(上篇) 最近开发了一个纯异步的redis客户端,算是比较深入的使用了一把netty.在使用过程中一边优化,一边解决各种坑.儿这些坑大部分基本上是Netty4对Netty3的改进部 ...
- Netty中的策略者模式
策略者模式的特点 在设计类的继承体系时,我们会刻意的把公共的部分都提取到基类中 比如先设计Person类,把人类都具有的行为放到这个Person,特有的行为设计成抽象方法,让子类具体去实现, 这样后续 ...
- Netty中的Future
先看下Future的整个继承体系,还有一个ChannelFuture不在里面: 在并发编程中,我们通常会用到一组非阻塞的模型:Promise,Future 和 Callback.其中的 Fut ...
- Netty中的EventExecutor
虽然NioEventLoop追朔到源头是继承了EventExector,但是两者在使用场景上有很大的区别. NioEventLoop的主要场景是用在Nio的场景下的IO轮询,而EventExecuto ...
- 线程组名称_Netty在Dubbo中的线程名称
在项目中,我们会使用RocketMQ和Dubbo.前者用于发送或消费消息,后者用于两个模块之间的接口调用. RocketMQ和Dubbo在它们的底层都使用Netty作为网络通信的框架.那么今天我们就来 ...
- java中channelmessage,MessagePack在Netty中的应用
[toc] MessagePack在Netty中的应用 前面使用Netty通信时,传输的都是字符串对象,因为在进行远程过程调用时,更多的是传输pojo对象,这时就需要对pojo对象进行序列化与反序列化 ...
最新文章
- java编写最大公约数_Java编写最大公约数和最小公倍数
- xxe漏洞攻防 简介 xml 引用外部实体 构造恶意内容
- Python小游戏(并夕夕版飞机大战)
- 开发一款自动指向特定页面元素的jQuery插件:jQuery PointPoint
- 程序员修神之路--简约而不简单的分布式通信基石
- 论文浅尝 - ACL2020 | 利用常识知识图对会话流进行显式建模
- iPhone 14 Pro将采用开孔全面屏:明年iPhone 15全系标配
- ncl 添加点shp文件_基于Arcgis绘制采样点地图
- CodeForces 1B
- java程序员面试宝典第四版pdf下载
- 【深度讲解】手把手教你python制作萝莉音智能对话语音机器人,附全部源码!速速学起来!!
- 团队协作OA解决方案
- 常见Linux应急排查命令
- 7-38 寻找大富翁 (25分)
- 讯时MX51(fxs) 24口语音网关 连接Elastix服务器的配置
- 安卓recovery系统详解
- 雍正王朝里康熙临终予四爷言
- [译]集群调度架构的变革 (四)
- 数据库在项目中的应用(软件测试方向)
- C#编程-FreeImage.dll使用方法