`
wuhuajun
  • 浏览: 92069 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

NIO 终结者

    博客分类:
  • java
阅读更多

传统IO请求等待主要在1.等待数据就绪 2.将数据从内核缓冲区到用户进程缓冲区互相拷贝过程

 

传统一连接一线程 请求多的时候服务端需要开辟很多线程消耗资源 最主要的这些消耗并不是都消耗在业务逻辑的执行上面 好多在io等待上面 (通过visualvm监控服务后台可以看出很多都是wait状态) 这个等待的过程是阻塞的,直到完成为止。

那么是不是可以将这些等待利用起来 让一个线程去等呢?如果有了这样一个线程去等待 那么大量请求过来是不是服务端就不需要开辟那么多线程呢?

 

NIO出现主要就是为了解决这件事情的。

NIO+REACTOR模式 基于事件机制: 这个时候读写就不再是阻塞的了 之前每个线程的操作都是固定的 读 执行 写 线程按照这个顺序去做事 读和写都必须等,等到真正的数据到来 可读取 可写入为止。时间就消耗在这里。

NIO有个专门的线程去等可读取可写入 等到时机到了 通过事件通知你去做事情 这样你的线程就没有去等待,都是用来的执行的,利用率非常高,利用率高 相对线程数可以少了。

 

具体如何通知:

最常见的

1.在启动的时候注册 Connect事件处理器到REACTOR

2.Connect连接事件来了 REACTOR调用到我的Connect执行处理器里面 在里面我可以注册个读取事件等待读事件发生。

3.可读时间发生后 REACTOR会调用读取处理器 处理完读取业务逻辑注册写事件

4.写事件发生了 REACTOR会调用写处理器 写入流。

 

这个过程中所有IO的等待都在REACTOR里面 如果REACTOR是一个线程的话 那么就消耗一个线程而已。

 

REACTOR读写具体发生了什么事情:

REACTOR读写时非阻塞的不能读取或者写入的时候可以去监视其他的IO这样单线程 扫描所有的IO就成了可能。

 

非阻塞让一切变得可能。酷   马上就是十一假期了。。。。。。。。。。。。。。。。。大家节日快乐

 

  • 大小: 241 KB
0
2
分享到:
评论

相关推荐

    JavaNIO chm帮助文档

    Java NIO系列教程(一) Java NIO 概述 Java NIO系列教程(二) Channel Java NIO系列教程(三) Buffer Java NIO系列教程(四) Scatter/Gather Java NIO系列教程(五) 通道之间的数据传输 Java NIO系列教程(六)...

    NIO 入门.chm,NIO 入门.chm

    NIO入门.chm NIO入门.chm NIO入门.chm

    java NIO和java并发编程的书籍

    java NIO和java并发编程的书籍java NIO和java并发编程的书籍java NIO和java并发编程的书籍java NIO和java并发编程的书籍java NIO和java并发编程的书籍java NIO和java并发编程的书籍java NIO和java并发编程的书籍java...

    java nio 实现socket

    java nio 实现socketjava nio 实现socketjava nio 实现socketjava nio 实现socketjava nio 实现socket

    Java IO NIO and NIO 2 无水印pdf

    Java IO NIO and NIO 2 英文无水印pdf pdf所有页面使用FoxitReader和PDF-XChangeViewer测试都可以打开 本资源转载自网络,如有侵权,请联系上传者或csdn删除 本资源转载自网络,如有侵权,请联系上传者或csdn...

    java nio 包读取超大数据文件

    Java nio 超大数据文件 超大数据文件Java nio 超大数据文件 超大数据文件Java nio 超大数据文件 超大数据文件Java nio 超大数据文件 超大数据文件Java nio 超大数据文件 超大数据文件Java nio 超大数据文件 超大数据...

    Java NIO 中文 Java NIO 中文 Java NIO 中文文档

    Java NIO 深入探讨了 1.4 版的 I/O 新特性,并告诉您如何使用这些特性来极大地提升您所写的 Java 代码的执行效率。这本小册子就程序员所面临的有代表性的 I/O 问题作了详尽阐述,并讲解了 如何才能充分利用新的 I/O ...

    Java NIO系列教程(一) Java NIO 概述

    Java NIO系列教程(一) Java NIO 概述

    Java NIO英文高清原版

    Java NIO英文高清原版

    Java IO NIO and NIO 2 epub

    Java IO NIO and NIO 2 英文epub 本资源转载自网络,如有侵权,请联系上传者或csdn删除 本资源转载自网络,如有侵权,请联系上传者或csdn删除

    NIO和AIO介绍

    NIO和AIO介绍NIO和AIO介绍NIO和AIO介绍NIO和AIO介绍NIO和AIO介绍NIO和AIO介绍NIO和AIO介绍NIO和AIO介绍NIO和AIO介绍NIO和AIO介绍NIO和AIO介绍NIO和AIO介绍NIO和AIO介绍NIO和AIO介绍NIO和AIO介绍

    尚硅谷Java视频_NIO 视频教程

    尚硅谷_NIO_NIO 与 IO 区别 ·02. 尚硅谷_NIO_缓冲区(Buffer)的数据存取 ·03. 尚硅谷_NIO_直接缓冲区与非直接缓冲区 ·04. 尚硅谷_NIO_通道(Channel)的原理与获取 ·05. 尚硅谷_NIO_通道的数据传输与内存映射文件 ...

    java NIO 视频教程

    Java NIO(New IO)是一个可以替代标准Java IO API的IO API(从Java 1.4开始),Java NIO提供了与标准IO不同的IO工作方式。 Java NIO: Channels and Buffers(通道和缓冲区) 标准的IO基于字节流和字符流进行操作的,...

    nio的excel导出

    nio的excel导出

    java基于NIO实现Reactor模型源码.zip

    java基于NIO实现Reactor模型源码java基于NIO实现Reactor模型源码java基于NIO实现Reactor模型源码java基于NIO实现Reactor模型源码java基于NIO实现Reactor模型源码java基于NIO实现Reactor模型源码java基于NIO实现...

    Java IO, NIO and NIO.2 原版pdf by Friesen

    New I/O (NIO), and NIO.2 categories. You learn what each category offers in terms of its capabilities, and you also learn about concepts such as paths and Direct Memory Access. Chapters 2 through 5 ...

    java NIO 中文版

    讲解了 JavaIO 与 JAVA NIO区别,JAVA NIO设计理念,以及JDK中java NIO中语法的使用

    NIO与零拷贝_javanio_nio和零拷贝_

    java nio和零拷贝 方面知识,适合对nio和零拷贝感兴趣的开发人员

    新输入输出NIO

    JDK 1.4 中引入的新输入输出 (NIO) 库在标准 Java 代码中提供了高速的、面向块的 I/O。本实用教程从高级概念到底层的编程细节,非常详细地介绍了 NIO 库。您将学到诸如缓冲区和通道这样的关键 I/O 元素的知识,并...

    java nio 尚硅谷 12讲 new

    java nio 尚硅谷 12讲 java nio 尚硅谷 12讲 java nio 尚硅谷 12讲

Global site tag (gtag.js) - Google Analytics