`
samttsch
  • 浏览: 63806 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

基于事件的NIO多线程服务器

 
阅读更多
最近在学习mina2,在ibm developerworks发现一篇文章对于理解mina的架构很有益处,特作此记录。

http://www.ibm.com/developerworks/cn/java/l-niosvr/

例子的架构:

1.服务主程序,接受请求将key交给reader来处理,reader是多线程的方式,维护一个静态的key的列表。

2.实现了和mina2类似的filter,在调用accept方法前触发fireOnAccept,接受ok之后触发fireOnAccepted,notifier内部有一个listeners列表,事件触发时调用依次listeners指定的事件处理方法。

3.发生读事件时,将key提交给Reader,notifyAll让reader线程来处理,在这里真正进行读操作,读取完成后,将读取内容传给事件监听者来处理。

4.读完成后,取消key,将key注册写事件。



分享到:
评论

相关推荐

    基于事件的 NIO 多线程服务器

    基于事件的 NIO 多线程服务器

    基于事件的_NIO_多线程服务器

    ### 基于事件的NIO多线程服务器解析 #### 概述 在Java的网络编程中,NIO(Non-blocking I/O)作为一种高效的数据处理模式,自JDK 1.4版本引入以来,逐渐成为了开发高性能网络应用的重要工具之一。与传统的阻塞I/O...

    基于时间的NIO多线程服务器

    ### 基于时间的NIO多线程服务器——深入解析与关键技术点 #### 引言 在服务器端编程领域,随着互联网应用的不断发展,如何高效处理大量的并发连接成为了一个重要议题。Java NIO(非阻塞I/O)作为一种先进的I/O处理...

    基于事件的NIO多线程服务器打包

    该包封装过的NIO比sun本身的更容易处理 server中只有区区几行就搞定了: //创建listener TimeHandler timer = new TimeHandler(); //获取Notifier Notifier notifier = Notifier.getNotifier(); //注册监听 notifier....

    使用多线程的NIO构建简易的多线程java服务器

    构建一个基于NIO的多线程服务器,主要步骤如下: 1. **创建ServerSocketChannel**: 首先,我们需要创建一个`ServerSocketChannel`,它是服务器端接收客户端连接的入口。通过`ServerSocketChannel.open()`方法初始...

    Nio多线程CS收发信息问题(问题已经解决)

    总结来说,"Nio多线程CS收发信息问题"涉及到在Java NIO环境下,如何构建一个多线程、高并发的客户端-服务器通信系统,并解决在这个过程中可能遇到的各种挑战。通过理解NIO的核心概念,合理设计线程管理和异常处理...

    java多线程nio服务器

    Java NIO服务器的多线程设计有助于提高服务器的并发性能,特别是在高并发场景下,可以有效地利用系统资源,避免大量线程导致的内存消耗和上下文切换开销。同时,通过选择器的使用,减少了对主线程的占用,使得服务器...

    Java实现基于NIO的多线程Web服务器实例

    Java实现基于NIO的多线程Web服务器实例 Java实现基于NIO的多线程Web服务器实例是使用Java语言基于NIO(New I/O)技术实现的多线程Web服务器。NIO技术可以提供高性能、低延迟的I/O操作,非常适合高并发的Web服务器。...

    基于HTTP、NIO、多线程实现浏览器高并发非阻塞访问服务器文件

    实现功能:基于HTTP协议,解析请求和拼接响应,基于NIO的非阻塞,线程池,文件传输。代码有详细注释和清晰的框架。 程序入口是: /HttpServerReactor/src/com/StartServer.Java 访问1,浏览:...

    基于多线程的web服务器java源码

    【标题】基于多线程的Web服务器Java源码解析 在Web开发领域,服务器是至关重要的组成部分,它们负责处理客户端的HTTP请求并返回相应的HTTP响应。本篇文章将深入探讨一个基于多线程的Web服务器Java源码,帮助你理解...

    基于Java NIO的网络服务器Netty生产实例.zip

    3. **Netty的事件驱动模型**:Netty采用 reactor 模式,通过EventLoopGroup来管理事件循环线程,每个线程负责处理多个连接的事件。当有新连接、读写事件发生时,会触发相应的ChannelHandler进行处理。 4. **Netty的...

    基于多线程的web服务器

    6. **性能优化**:为了最大化效率,多线程服务器可能采用各种策略,如使用非阻塞I/O(NIO)以减少线程等待时间,或者利用异步事件驱动模型(如Reactor模式)来减少线程上下文切换的开销。 然而,多线程模型并非没有...

    多线程web服务器 附实验报告 java

    在IT领域,尤其是在服务器开发中,多线程技术扮演着至关重要的角色,特别是在构建高性能的Web服务器时。本文将深入探讨多线程Web服务器的概念、Java中的Socket编程以及如何通过实现Runnable接口来创建多线程。 多...

    一个基于java nio的简单的http服务器.zip

    1. **Selector(选择器)**:选择器允许单个线程检查多个通道(Channels)上的事件,如连接建立、数据到达等。通过注册通道到选择器,并设置感兴趣的事件类型,我们可以避免创建大量线程来处理每个连接,从而提高...

    基于nio实现的多文件上传源码

    本主题“基于nio实现的多文件上传源码”探讨的是如何利用Java NIO来实现高效的多文件上传功能,尤其对于小文件数量较大的情况。 首先,理解NIO的基本概念是必要的。NIO中的“非阻塞”意味着当数据不可用时,读写...

    基于java的多线程端口扫描软件(源码)

    本项目是基于Java实现的多线程端口扫描软件,旨在利用多线程技术来提高端口扫描的速度和效率。端口扫描是网络安全领域中的一个关键操作,用于发现网络上开放的服务和可能的安全漏洞。 1. **Java多线程** 在Java中...

    多线程精品资源--Java NIO+多线程实现聊天室.zip

    在这个“多线程精品资源--Java NIO+多线程实现聊天室”的压缩包中,我们可以推测它包含了一套关于如何使用Java NIO和多线程技术来创建一个实时聊天应用的教程或示例代码。 首先,多线程是Java中并行处理的基础。...

Global site tag (gtag.js) - Google Analytics