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

计算机网站的开发流程公司的帐如何做网站

计算机网站的开发流程,公司的帐如何做网站,网架加工价格,贵阳网站seo一、DefaultEventExecutorGroup的用途 DefaultEventExecutorGroup 是 Netty 框架中的一个类#xff0c;用于管理和调度事件处理器#xff08;EventExecutor#xff09;的组。在 Netty 中#xff0c;事件处理是通过多线程来完成的#xff0c;EventExecutor 是处理事件的基…一、DefaultEventExecutorGroup的用途 DefaultEventExecutorGroup 是 Netty 框架中的一个类用于管理和调度事件处理器EventExecutor的组。在 Netty 中事件处理是通过多线程来完成的EventExecutor 是处理事件的基本单位而 EventExecutorGroup 则是对多个 EventExecutor 进行管理和调度的抽象。 具体来说DefaultEventExecutorGroup 具有以下主要用途 多线程事件处理 DefaultEventExecutorGroup 会创建多个 EventExecutor 实例每个实例都在独立的线程中执行事件处理。这有助于提高并发性能允许多个事件可以并行地在不同线程中处理。 任务调度 除了处理事件EventExecutor 还可以用于执行定时任务和异步任务。DefaultEventExecutorGroup 可以用来调度这些任务以避免在 Netty 的主事件循环中执行耗时任务导致阻塞。 避免阻塞主事件循环 如果一个事件处理器的执行时间较长可能会影响 Netty 的主事件循环的性能。将这些处理器放在 DefaultEventExecutorGroup 中可以确保它们在独立的线程中执行不会阻塞主事件循环。 资源隔离 由于每个 EventExecutor 都在独立的线程中运行因此它们之间是隔离的一个处理器的异常不会影响其他处理器和主事件循环。 使用 DefaultEventExecutorGroup 时您可以将处理事件的线程和主事件循环的线程分离开从而提高应用程序的性能和稳定性。但是需要注意的是创建多个线程可能会带来一些额外的开销和管理成本需要根据具体情况进行权衡和优化。 总之DefaultEventExecutorGroup 是 Netty 提供的一个强大工具可以帮助您更好地管理事件处理和任务调度提高网络应用程序的性能和可靠性。 二、使用示例 private static DefaultEventExecutorGroup defaultEventExecutorGroup new DefaultEventExecutorGroup((Runtime.getRuntime().availableProcessors() * 2));// NettyServerHandler-业务处理类 pipeline.addLast(defaultEventExecutorGroup, handler, new NettyServerHandler()); 接口ChannelPipeline 我们这里使用的是第二个方法 ChannelPipeline addLast(String var1, ChannelHandler var2);ChannelPipeline addLast(EventExecutorGroup var1, String var2, ChannelHandler var3);ChannelPipeline addLast(ChannelHandler... var1);ChannelPipeline addLast(EventExecutorGroup var1, ChannelHandler... var2);addLast实现见类io.netty.channel.DefaultChannelPipeline 可以看到它是异步执行的将work线程和I/O线程隔离开来。 从代码newCtx this.newContext(group, this.filterName(name, handler), handler);继续往后看线程池EventExecutor。 三、DefaultEventExecutor.java 类的继承关系它继承于SingleThreadEventExecutor详情见下 DefaultEventExecutorGroup和DefaultEventExecutor的关系 DefaultEventExecutor的核心方法run() protected void run() {do {Runnable task this.takeTask();if (task ! null) {task.run();this.updateLastExecutionTime();}} while(!this.confirmShutdown());}关键类io.netty.util.concurrent.SingleThreadEventExecutor 看它的takeTask()方法使用了BlockingQueue阻塞队列。 protected Runnable takeTask() {assert this.inEventLoop();if (!(this.taskQueue instanceof BlockingQueue)) {throw new UnsupportedOperationException();} else {BlockingQueue taskQueue (BlockingQueue)this.taskQueue;Runnable task;do {ScheduledFutureTask? scheduledTask this.peekScheduledTask();if (scheduledTask null) {Runnable task null;try {task (Runnable)taskQueue.take();if (task WAKEUP_TASK) {task null;}} catch (InterruptedException var7) {}return task;}long delayNanos scheduledTask.delayNanos();task null;if (delayNanos 0L) {try {task (Runnable)taskQueue.poll(delayNanos, TimeUnit.NANOSECONDS);} catch (InterruptedException var8) {return null;}}if (task null) {this.fetchFromScheduledTaskQueue();task (Runnable)taskQueue.poll();}} while(task null);return task;}}四、总结 在将io线程和工作线程隔离的时候建议你直接使用netty自带的并发类而无需自己去定义业务线程池。因为它完全可胜任异步的需求。
http://www.hkea.cn/news/14283694/

相关文章:

  • 长沙建站做企业网站公司城镇建设部网站
  • 做网站用什么服务器好关于网站制作报价
  • 网站的建设意见量品定制和衣邦人哪个好
  • 网站建设 音频插件建筑网人才
  • 珠海网络公司网站建设公司网站备案怎么做
  • wordpress拖拽式建站主题网站更改模板 seo
  • 网站怎样投放广告位我的世界是谁做的视频网站
  • 建设网站所需材料贵阳网站建设 设计可以吗
  • 网站自适应 常用尺寸淘客推广方法
  • 公司网站英文域名在哪查学校实验室网站建设现状
  • 浙江怎么制作网站网站页头图片
  • 做网站php企业营销网站建设公司哪家好
  • 宿迁做网站多少钱加强网络暴力治理
  • 网站建设链接怎么加上去网站开发获取用户微信号登录
  • 企业网站管理系统排名wordpress 加图片
  • 首钢建设集团山东公司网站申请网站建设经费
  • 秦皇岛做网站优化价格wordpress如何下载
  • 李光辉:营销型企业网站建设的指导思想是什么?腾讯云 云服务器
  • 公司做网站多软件开发流程图例子
  • 网站上线要准备什么网站开发语言 asp
  • eclipse做网站代码o2o平台名称有哪些
  • 晋城客运东站网站开发软件推广渠道
  • 345诛仙网站是谁做的服务号 wordpress
  • 网站开发合同的付款方式wordpress邮箱收不到邮件
  • 微信公司网站wordpress手机内容慢
  • 个人网站建设方案书 范文软文营销的作用
  • 民和网站建设公司大数据平台的整体搭建思路
  • 吉林省工伤保险网站网络营销技巧
  • 网站建设与制作实验报告icp备案综合查询网站
  • 高端型网站建设福州小程序定制