当前位置: 首页 > news >正文

福州 网站定制设计稿定设计官方免费下载

福州 网站定制设计,稿定设计官方免费下载,wordpress过滤器插件6,金融公司网站方案❃博主首页 #xff1a; 「码到三十五」 #xff0c;同名公众号 :「码到三十五」#xff0c;wx号 : 「liwu0213」 ☠博主专栏 #xff1a; mysql高手 elasticsearch高手 源码解读 java核心 面试攻关 ♝博主的话 #xff1a… ❃博主首页 「码到三十五」 同名公众号 :「码到三十五」wx号 : 「liwu0213」 ☠博主专栏 mysql高手 elasticsearch高手 源码解读 java核心 面试攻关 ♝博主的话 搬的每块砖皆为峰峦之基公众号搜索「码到三十五」关注这个爱发技术干货的coder一起筑基 Netty作为一个高性能的异步事件驱动的网络应用框架其核心组件之一便是EventLoopGroup。EventLoopGroup在Netty中扮演着线程池的角色负责管理和调度事件循环是Netty实现高效并发的基础。本文将结合源码详细介绍Netty中EventLoopGroup类的技术原理和实现细节。 EventLoopGroup的角色与功能 EventLoopGroup在Netty中是一个接口它本质上是一个线程池用于获取线程并管理线程的生命周期。每个EventLoopGroup包含一组EventLoop每个EventLoop都是一个单线程执行器负责处理分配给它的Channel上的所有IO事件。 主要功能 事件循环调度EventLoopGroup负责调度事件循环的执行确保每个事件都在正确的线程上被处理。线程管理通过线程池管理EventLoop的生命周期可以根据需要创建、启动和销毁线程。处理器分配将IO事件分配给相应的处理器链ChannelPipeline进行处理。定时任务调度支持定时任务的调度和执行如链路空闲状态监测、心跳消息发送等。优雅关闭提供了优雅关闭的能力确保在关闭时等待正在处理的任务完成。 EventLoopGroup的实现原理 EventLoopGroup的默认实现是NioEventLoopGroup它基于Java NIO的Selector机制实现IO多路复用。下面结合源码分析其实现原理。 初始化过程 当创建NioEventLoopGroup实例时可以通过构造函数指定线程数量。如果不指定则默认创建CPU核心数*2个线程。 public NioEventLoopGroup(int nThreads) {this(nThreads, (Executor) null, SelectorProvider.provider()); }// 省略部分代码...protected MultithreadEventLoopGroup(int nThreads, Executor executor, Object... args) {super(nThreads 0 ? DEFAULT_EVENT_LOOP_THREADS : nThreads, executor, args); }// DEFAULT_EVENT_LOOP_THREADS 是静态常量默认为CPU核心数*2 private static final int DEFAULT_EVENT_LOOP_THREADS; static {DEFAULT_EVENT_LOOP_THREADS Math.max(1, SystemPropertyUtil.getInt(io.netty.eventLoopThreads, NettyRuntime.availableProcessors() * 2)); }线程池的实现 NioEventLoopGroup底层使用Netty自定义的ThreadPerTaskExecutor线程池实现。每个线程都绑定一个EventLoop实例线程和EventLoop一一对应。 // 在MultithreadEventExecutorGroup中初始化线程 for (int i 0; i nThreads; i) {eventExecutors.add(newThread(new DefaultEventExecutor.DefaultRunnableDecorator(r), namePrefix - i)); }// DefaultEventExecutor.DefaultRunnableDecorator 封装了Runnable任务 private final class DefaultRunnableDecorator implements Runnable {private final Runnable task;DefaultRunnableDecorator(Runnable task) {this.task task;}Overridepublic void run() {// 获取当前线程的EventLoop并执行任务if (eventExecutor.inEventLoop()) {task.run();} else {eventExecutor.execute(task);}} }事件处理流程 注册Channel当一个新的连接被接受时Netty会注册一个新的Channel到EventLoopGroup中并从中选择一个EventLoop绑定到这个Channel上。事件循环EventLoop不断地轮询其注册的Channel上的IO事件一旦有事件就绪就调用相应的处理器如ChannelPipeline中的Handler进行处理。任务执行除了IO事件外用户还可以提交异步任务到EventLoop执行。这些任务会在IO事件处理完毕后按顺序执行。 优雅关闭 当需要关闭EventLoopGroup时可以调用shutdownGracefully()方法。该方法会等待正在处理的任务完成后再关闭线程池确保资源的正确释放。 public final Future? shutdownGracefully() {// 省略部分代码...// 提交关闭任务到全局事件执行器globalEventExecutor.execute(() - {if (confirmShutdown()) {// 遍历并关闭所有EventExecutorfor (EventExecutor e: children) {e.shutdownGracefully();confirmShutdown();}terminationFuture.setSuccess(null);}});return terminationFuture; }总结 EventLoopGroup作为Netty框架中的核心组件之一通过高效的线程管理和事件调度机制确保了Netty能够快速响应各种网络事件保持网络通信的流畅和高效。通过对其实现原理的深入理解我们可以更好地利用Netty框架开发高性能的网络应用。 关注公众号[码到三十五]获取更多技术干货 !
http://www.zqtcl.cn/news/597246/

相关文章:

  • 怎样做商城网站的推广wordpress用php哪个版本好
  • 网站功能模块建设建设网站考证
  • 网站代码结构成都住建局官网报名入口
  • 吴桥县网站建设房产门户网站模板
  • 标签化网站网络服务类型及其所采用的网络协议
  • 做网站服务器应该怎么配置网页美工设计实践性教案
  • 响应式网站导航栏内容泰安网站营销推广
  • 南通营销网站开发软件开发工具名词解释
  • 吉林企业网站模板建站哪个好wordpress后台新建慢
  • 整合营销的成功案例肇庆seo优化
  • 网站关键字标签合肥高端网站建设设计公司哪家好
  • 大型企业网站设计案例免费在线看片
  • 云南网站开发公司找哪家网站弹出式链接后台怎么做
  • 电商网站的支付模块怎么做企业网站建设招标文件
  • 旅游在线网站开发十八个免费的舆情网站
  • 网站怎么申请百度小程序火车头采集发布wordpress
  • 外贸网站的推广技巧有哪些莱芜网吧
  • 溧阳城乡建设局网站ps中网站页面做多大的
  • sns社交网站 有哪些wordpress开发分类筛选
  • 黄石网站建设教程网上怎样查询企业资质
  • 国内设计师交流网站怎样做自己的网站钻钱
  • 无锡专业网站推广网络营销组合策略
  • 网站建设的安全威胁中国建设银行的网站色彩
  • 中小型企业网站建设与管理潍坊做网站哪家公司最好
  • 广州白云机场网站建设免费的网站模版
  • 商务网站建设策划书51网站怎么打开
  • 一个网站里面只放一个图片怎么做中国十大网络公司排名
  • 仓库网站开发怎么看一个网站做外链
  • 网站代码编辑器中国十大黑科技
  • 深圳网站建设一尘互联遵义网站开发哪家好