当前位置:  软件>java软件

高效率的nio框架 nio java raptor

    来源:    发布时间:2015-01-18

    本文导语:  设计初衷是提供方便易用,且高效率的nio框架,一部分实现上参考了mina。还包括线程池,编解码,内存池等机制,以便于开发高性能tcp程序。 文档后续会慢慢的补上。 整体实现上尽量少的使用锁,避免cpu浪费。 整体框架提...

设计初衷是提供方便易用,且高效率的nio框架,一部分实现上参考了mina。还包括线程池,编解码,内存池等机制,以便于开发高性能tcp程序。 文档后续会慢慢的补上。 整体实现上尽量少的使用锁,避免cpu浪费。 整体框架提供了服务线程池,对于一个连接来讲,这个连接的事件将会在线程池中执行,不过这个过程保证是顺序执行的,例如对于一个连接,在差不多同时的时间 接收到了两个包,那么,我们可以认为,在第一次接受事件未执行完,第二个事件不会被执行,即这两个事件不是分别被发送到两条线程中执行,可以认为是被串行 化到同一条线程中(注意:此处一条线程,并不是真的在同一条线程中执行,这两个事件可能在不同线程中,只不过框架严格保证执行的先后顺序了,所以对于 ThreadLocal变量的使用,是不安全的)。由于线程池的添加,我们在开过程中,无需再考虑业务层消耗,直接按事件触发式就可以了,也不用再将数据 包投递到另外的线程中。使用方式参见TestProtocolClient,TestProtocolServer

框架还提供了完全不使用线程池的方式,请参见TestClient,TestServer

当然,如果你需要部分事件置入到线程池,也是可以的,后续,我会补一下这反面的例子代码

循环内存池的机制,实际上是为了提供一种避免gc的一种方式,当然如果你的程序不需要内存池也可以取消掉,内存池采用的是块分配,例如块大小1024,如果需要4096的话,内存池会返回4个块,具体使用可以参考TextLineProtocol类.

TextLineProtocol提供了按行的协议解析,字符采用的unicode编码,在类似这种情况下,内存池的作用就体现出来了,不用每次new新的byte数组了。


    
 
 

您可能感兴趣的文章:

 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 如何高效率的实现类似于csdn上的发送短信息功能??
  • 作为Mysql Server, 哪个Linux 较高效率?
  • MySQL大表中重复字段的高效率查询方法
  • c#高效率导出多维表头excel的实例代码
  • mysql分页原理和高效率的mysql分页查询语句


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3