`
pengfeifei26
  • 浏览: 245656 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

mina netty线程模型

    博客分类:
  • nio
 
阅读更多
mina相关
https://www.cnblogs.com/moonandstar08/p/5483605.html
https://www.cnblogs.com/wucao/p/4030211.html
http://www.52im.net/forum.php?mod=viewthread&tid=95
https://blog.csdn.net/u012506661/article/details/52694737

netty相关
https://www.cnblogs.com/NewMan13/p/7820534.html
https://my.oschina.net/7001/blog/1480153

单线程模型
 EventLoopGroup bossGroup = new NioEventLoopGroup(1);
 try {
        ServerBootstrap b = new ServerBootstrap();
        b.group(bossGroup)
         .channel(NioServerSocketChannel.class)
        ......
以上示例中实例化了一个NIOEventLoopGroup,并传入线程数量为1,然后调用ServerBootstrap的group方法绑定线程组,看实现:

    @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;
    }
从源码可知,实际仍然绑定了 bossGroup 和 workerGroup,只是都是同一个NioEventLoopGroup实例而已,这样Netty中的acceptor和后续的所有客户端连接的IO操作都是在一个线程中处理,这就相当于Reactor的单线程模型。


多线程模型
EventLoopGroup bossGroup = new NioEventLoopGroup(1);
EventLoopGroup workerGroup = new NioEventLoopGroup();
try {
      ServerBootstrap b = new ServerBootstrap();
      b.group(bossGroup, workerGroup)
       .channel(NioServerSocketChannel.class)
       ......
创建1个线程的bossGroup线程组,这个线程负责处理客户端的连接请求,而workerGroup默认使用处理器个数*2的线程数量来处理I/O操作。这就相当于Reactor的多线程模型。



主从多线程模型
EventLoopGroup bossGroup = new NioEventLoopGroup(4);
EventLoopGroup workerGroup = new NioEventLoopGroup();
try {
      ServerBootstrap b = new ServerBootstrap();
      b.group(bossGroup, workerGroup)
       .channel(NioServerSocketChannel.class)
       ......

分享到:
评论

相关推荐

    MINA2与Netty4比较分析

    接下来将根据标题和描述的要求详细分析Mina2与Netty4的区别,重点从它们的线程模型、Buffer使用以及Netty4中集成的序列化工具ProtoBuf等方面进行比较。 首先,Mina2和Netty4都是异步事件驱动的网络应用框架。Netty4...

    Java学习之IO总结及mina和netty

    Netty的核心是它的“Boss-Worker”模型,Boss线程负责接受新连接,Worker线程则处理已建立连接上的读写事件。Netty还提供了丰富的编解码器,简化了网络协议的处理。此外,Netty具有高度的灵活性和良好的性能,被广泛...

    Java视频教程 Java游戏服务器端开发 Netty NIO AIO Mina视频教程

    04、第四课netty线程模型源码分析(一) 05、第五课netty线程模型源码分析(二) 06、第六课netty5案例学习 07、第七课netty学习之心跳 08、第八课protocol buff学习 09.第九课自定义序列化协议之自定义序列化协议 ...

    mina2资料-各种教程

    MINA提供了多种线程模型,如简单的单线程模型、多线程模型以及Event-driven模型。选择合适的线程模型可以根据应用的并发需求来调整性能和资源消耗。 了解以上知识点是掌握Apache MINA的基础,通过提供的学习资料,...

    Java Netty 分布式开发 框架

    Netty的设计目标是提供一个简单易用的API、统一的API,适用于不同的协议和用例,同时具备高度可定制的线程模型,使用户可以定制Netty的线程行为。 Netty的设计灵感来源于JBoss的MINA框架,但二者在设计理念上有所...

    最透彻的的Netty高性能原理和框架架构解析,使用文件和图形详细描述了netty的原理

    Netty 的设计优雅体现在其统一 API 阻塞和非阻塞 Socket、灵活且可扩展的事件模型、高度可定制的线程模型等方面。 再次,Netty 的高性能原理还体现在其高性能和吞吐量方面。Netty 的高性能体现在其延迟更低、减少...

    Netty 4.x User Guide 中文翻译《Netty 4.x 用户指南》

    Netty中,事件循环模型是其高性能的关键所在,通过一组精心设计的事件循环线程,可以高效地处理网络事件,从而减少不必要的线程上下文切换和资源消耗。 在“编写一个抛弃服务器”章节中,用户指南会指导用户创建一...

    netty5.0架构剖析和源码解读

    业界主流的NIO框架如Netty、Mina等,它们封装了底层的NIO操作,提供了更高层次的网络编程抽象,简化了网络应用的开发。 2. NIO入门 Netty中的NIO实现主要基于java.nio包,NIO服务端和客户端的创建与传统IO模型有很...

    Netty面试题 +Netty综合面试题整合

    2. **Netty 的线程模型**: - **EventLoop**:每个 WorkerGroup 包含多个 EventLoop,负责执行 ChannelHandler 中的事件处理任务,确保线程安全。 - **NIO 和 EPOLL**:Netty 支持基于 Java NIO 和 Linux EPOLL...

    mina_tcp服务端需要jar包.zip

    5. **线程模型**:MINA支持多线程模型,可以配置为单线程、多线程或者工作线程池模式,以适应不同场景下的性能需求。 6. **异常处理**:MINA提供了完善的异常处理机制,可以在Handler中捕获并处理各种网络异常,如...

    netty入门例子--(不是翻译官方文档)

    而Netty采用了非阻塞的NIO(New IO)模型,利用Java的Selector和Channel,使得一个线程可以同时处理多个连接,极大地提高了系统的并发能力。在这个入门例子中,你会看到如何创建并配置EventLoopGroup,这是Netty的...

    基于Netty的Android点对点聊天软件-源码

    5. **多线程与并发**:由于Netty是异步的,所以需要理解Android的线程模型以及如何在后台线程中处理网络事件,以避免阻塞主线程。 6. **用户界面设计**:在Android应用中,用户界面是与用户交互的关键。使用Android...

    mina依赖jar包

    1. **非阻塞I/O模型**:MINA采用NIO(Non-blocking Input/Output)模型,提高了处理大量并发连接的能力。非阻塞I/O允许一个线程同时处理多个连接,减少了线程创建和销毁的开销,提升了系统效率。 2. **事件驱动**:...

    java mina组合包

    Mina的核心概念是基于NIO(非阻塞I/O)模型,它允许在单个线程上处理多个连接,从而极大地提高了系统资源的利用率和整体性能。下面我们将深入探讨Java Mina的关键特性、主要组件以及如何在实际项目中使用它们。 1. ...

    Apache_Mina2.0学习笔记

    - **线程模型**:Mina的线程模型允许调整以适应不同的性能需求,如单线程、多线程或者NIO线程池。 - **性能优化**:Mina提供了许多性能调优选项,如缓冲区大小、心跳机制、连接超时等,可以根据实际场景进行设置。 ...

    NIO学习-Java源代码分享(含netty)

    Netty的特性包括零拷贝、高性能的缓冲区、线程模型优化等。 5. **Mina**:Apache Mina是一个网络通信应用框架,也基于NIO,但它的设计目标是提供一个可扩展的、易于使用的抽象层,使得开发人员可以专注于业务逻辑,...

    Java在高并发网络编程中的应用

    Netty的线程模型设计得非常巧妙,能够有效地处理大量并发连接,这使得它特别适合用于构建高并发的网络应用。 总结来说,Java在网络编程尤其是在高并发场景中的应用主要得益于NIO技术的引入和Mina、Netty这样高级...

Global site tag (gtag.js) - Google Analytics