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相关推荐

  1. Netty 源码 — 线程模型的分析

    文章目录 Netty 线程模型分析 Reactor 线程模型 Netty 初始化线程池 BossGroup 工作原理 绑定 Channel 事件循环 执行 IO 事件 WorkerGroup 工作 总 ...

  2. netty源码分析系列——EventLoop

    2019独角兽企业重金招聘Python工程师标准>>> 前言 EventLoop也是netty作为一个事件驱动架构的网络框架的重要组成部分,netty主要通过它来实现异步编程,从前面 ...

  3. netty中的future和promise源码分析(二)

    前面一篇netty中的future和promise源码分析(一)中对future进行了重点分析,接下来讲一讲promise. promise是可写的future,从future的分析中可以发现在其中没 ...

  4. Netty中的那些坑

    Netty中的那些坑(上篇) 最近开发了一个纯异步的redis客户端,算是比较深入的使用了一把netty.在使用过程中一边优化,一边解决各种坑.儿这些坑大部分基本上是Netty4对Netty3的改进部 ...

  5. Netty中的策略者模式

    策略者模式的特点 在设计类的继承体系时,我们会刻意的把公共的部分都提取到基类中 比如先设计Person类,把人类都具有的行为放到这个Person,特有的行为设计成抽象方法,让子类具体去实现, 这样后续 ...

  6. Netty中的Future

    先看下Future的整个继承体系,还有一个ChannelFuture不在里面:     在并发编程中,我们通常会用到一组非阻塞的模型:Promise,Future 和 Callback.其中的 Fut ...

  7. Netty中的EventExecutor

    虽然NioEventLoop追朔到源头是继承了EventExector,但是两者在使用场景上有很大的区别. NioEventLoop的主要场景是用在Nio的场景下的IO轮询,而EventExecuto ...

  8. 线程组名称_Netty在Dubbo中的线程名称

    在项目中,我们会使用RocketMQ和Dubbo.前者用于发送或消费消息,后者用于两个模块之间的接口调用. RocketMQ和Dubbo在它们的底层都使用Netty作为网络通信的框架.那么今天我们就来 ...

  9. java中channelmessage,MessagePack在Netty中的应用

    [toc] MessagePack在Netty中的应用 前面使用Netty通信时,传输的都是字符串对象,因为在进行远程过程调用时,更多的是传输pojo对象,这时就需要对pojo对象进行序列化与反序列化 ...

最新文章

  1. java编写最大公约数_Java编写最大公约数和最小公倍数
  2. xxe漏洞攻防 简介 xml 引用外部实体 构造恶意内容
  3. Python小游戏(并夕夕版飞机大战)
  4. 开发一款自动指向特定页面元素的jQuery插件:jQuery PointPoint
  5. 程序员修神之路--简约而不简单的分布式通信基石
  6. 论文浅尝 - ACL2020 | 利用常识知识图对会话流进行显式建模
  7. iPhone 14 Pro将采用开孔全面屏:明年iPhone 15全系标配
  8. ncl 添加点shp文件_基于Arcgis绘制采样点地图
  9. CodeForces 1B
  10. java程序员面试宝典第四版pdf下载
  11. 【深度讲解】手把手教你python制作萝莉音智能对话语音机器人,附全部源码!速速学起来!!
  12. 团队协作OA解决方案
  13. 常见Linux应急排查命令
  14. 7-38 寻找大富翁 (25分)
  15. 讯时MX51(fxs) 24口语音网关 连接Elastix服务器的配置
  16. 安卓recovery系统详解
  17. 雍正王朝里康熙临终予四爷言
  18. [译]集群调度架构的变革 (四)
  19. 数据库在项目中的应用(软件测试方向)
  20. C#编程-FreeImage.dll使用方法

热门文章

  1. MySQL第2天:MySQL的架构介绍之MySQL介绍
  2. linux内核关于io的变迁
  3. oracle:表空间使用率,表空间扩容
  4. Python 3 教程二:文件,目录和路径
  5. 数字采购:企业互联网新引擎
  6. RMAN异机恢复步骤及故障处理
  7. 安装vsftpd-3.0.2.tar.gz源码
  8. LYNC 和 Exchange 整合手记之R2 如何下如何安装补丁
  9. 无论腾讯是自主开放还是被开放,我们都表示欢迎和支持
  10. 轻松学习Linux之自动执行任务