当前位置: 首页 > 知识库问答 >
问题:

Netty:Boss事件循环和执行器

皇甫喜
2023-03-14

在我目前使用Netty的大多数示例中,我看到boss执行器是一个缓存线程池。根据我的理解,事件循环应该只有一个线程,为什么我们需要boss事件循环的缓存线程池?

共有1个答案

尚河
2023-03-14

Netty具有EventLoopGroup的概念,它聚合了多个EventLoopEventLoop是单线程的,而EventLoopGroup通常不是。除非你在做旧的阻塞I/O。

现在,老板和工人之间的关系。假设您谈论的是服务器实现,老板现在被称为<code>parentGroup</code>,而工人被称为 。父级处理接收器通道的I/O,即绑定到服务器接受新请求的端口的通道。子级将处理接受连接的I/O。实际上,受体通道应该由一个且唯一的线程处理,并且它将被处理。如果将带有多个 EventLoopEventLoopGroup传递给父级,那么无论如何,它只会使用其中一个 Event Loop,因此一个好的做法是为父级和子级重用相同的 Event LoopGroup

ServerBootstrap实际上提供了两个构造函数,一个接受单个组并为父级和客户端重用它:

@Override
public ServerBootstrap group(EventLoopGroup group) {
    return group(group, group);
}

一个允许您显式传递父级和子级的一个:

public ServerBootstrap group(EventLoopGroup parentGroup, EventLoopGroup childGroup) {
    super.group(parentGroup);
    if (childGroup == null) {
        throw new NullPointerException("childGroup");
    }
    if (this.childGroup != null) {
        throw new IllegalStateException("childGroup set already");
    }
    this.childGroup = childGroup;
    return this;
}

您可以在此处查看:https://github.com/netty/netty/blob/master/transport/src/main/java/io/netty/bootstrap/ServerBootstrap.java

 类似资料:
  • 我有一个程序,当你点击按钮,它将执行一个名为

  • 事件是应用程序与自身各个功能模块以及与操作系统进行通讯的手段,也是实现事件驱动编程模型的基础,应用程序如果要响应这些事件,通常是创建一个事件队列来集中存放它们,从事件队列取出事件并调用对应处理器就是一次事件响应,而往复执行这个操作的过程就是事件循环。 驱动接口 LCUI 对事件循环的操作有处理事件、绑定事件和解绑事件,驱动模块的职责就是基于操作系统接口向 LCUI 提供实现了这些操作的接口。首先我

  • 问题内容: nodejs体系结构内部是否存在两个事件循环? libev / libuv v8 javascript事件循环 在I / O请求上,节点是否将请求排队到libeio,而libeio又通过使用libev的事件通知数据的可用性,最后这些事件由v8事件循环使用回调来处理? 基本上,libev和libeio如何集成到nodejs架构中? 是否有任何文档可以清楚地了解nodejs内部体系结构?

  • 主要内容:事件驱动程序,实例,Node 应用程序是如何工作的?Node.js 是单进程单线程应用程序,但是因为 V8 引擎提供的异步执行回调接口,通过这些接口可以处理大量的并发,所以性能非常高。 Node.js 几乎每一个 API 都是支持回调函数的。 Node.js 基本上所有的事件机制都是用设计模式中观察者模式实现。 Node.js 单线程类似进入一个while(true)的事件循环,直到没有事件观察者退出,每个异步事件都生成一个事件观察者,如果有事件发

  • nodejs架构中是否有两个内部事件循环? libev/libuv v8 javascript事件循环 在I/O请求时,node是否将请求排队发送到libeio,然后lib eio使用libev通过事件通知数据的可用性,最后这些事件由v8事件循环使用回调处理? 基本上,libev和libeio在nodejs架构中是如何集成的? 是否有任何留档可以提供nodejs内部架构的清晰图片?

  • 问题内容: Node.js I / O事件循环是单线程还是多线程? 如果我有多个I / O进程,则节点会将它们置于外部事件循环中。它们是按顺序处理(最快),还是处理事件循环以同时处理它们(…以及哪些限制)? 问题答案: 事件循环 Node.js事件循环在单个线程下运行,这意味着您编写的应用程序代码在单个线程上进行评估。Nodejs本身在libuv之下使用了许多线程,但是您在编写nodejs代码时不