博客
关于我
4. Java的NIO
阅读量:521 次
发布时间:2019-03-08

本文共 838 字,大约阅读时间需要 2 分钟。

1. 简介

Java NIO(New Input/Output)是从JDK 1.4开始 JDK 提供的一系列改进输入/输出特性,统称为NIO,代表新式的非阻塞输入输出机制。它的目标是提升处理大量数据的效率,尤其是在网络 IO 操作中,通过非阻塞的方式处理数据输入输出。

2. 核心概念

NIO 相关的类主要分布在 java.nio 包及子包中,取代了原有的 java.io 包中的许多类。其最核心的三个概念是:

  • Channel(通道):处理输入输出操作的核心,类似于文件类,但更高效,支持非阻塞 IO。
  • Buffer(缓冲区): 用于临时存储和操作数据块,最适合处理大数据量的输入输出。
  • Selector(选择器): 提供对多个通道进行轮询操作的能力,实现多任务处理。
  • NIO 的核心特点是“面向缓冲区”,也可以说是“面向块”的编程模式。数据在读取时会被暂时存储在缓冲区中,可以在任何时候对缓冲区进行操作,而不必等待全部数据读取完成。这使得 NIO 具有很高的灵活性,同时支持非阻塞式的高效网络处理。

    3. 非阻塞 IO 的优势

    NIO 的非阻塞模式将带来显著的性能提升,具体表现为:

    高效处理大规模数据: 一个线程可以同时管理多个 IO 操作,不需等待 IO 完成,可以做其他任务,极大提升处理效率。

    资源利用率高: 不再需要为每个 IO 操作创建单独线程,大量减少CPU负担,尤其是在网络传输海量数据时表现尤为突出。

    支持高吞吐量: 能够在同一线程内同时处理多个输入输出操作,数据传输速度有显著提升,尤其适合网络服务器和分布式系统。

    4. HTTP2.0 系统中的应用

    NIO 技术在 HTTP2.0 中发挥了重要作用。HTTP2.0 引入了多路复用技术(Multiplexing),允许同一 TCP 连接同时处理多个请求,充分发挥 NIO 吞吐量优势。而与 HTTP1.1 相比,HTTP2.0 的并发请求数量提高了好几个量级,极大提升了网络应用的性能表现。

    转载地址:http://fduiz.baihongyu.com/

    你可能感兴趣的文章
    C++中如何对单向链表操作
    查看>>
    C++扬帆远航——1
    查看>>
    上周热点回顾(5.3-5.9)
    查看>>
    测试网络联接状况常用命令 ping 使用方法介绍
    查看>>
    【Bootstrap5】精细学习记录
    查看>>
    面试官:这些错误都没见过,还敢说会安装Elasticsearch?
    查看>>
    Java复习面试指南-06为什么要进行数据类型转换?什么情况下会进行自动类型转换?
    查看>>
    [源码解析] 并行分布式任务队列 Celery 之 EventDispatcher & Event 组件
    查看>>
    QQ框架的搭建
    查看>>
    Hololens2开发笔记-捕获照片到内存并上传至服务器(unity)
    查看>>
    OpenCV4(6)-LookUpTable(LUT)查找表(C++,Python,JS)
    查看>>
    OpenCV4.0进阶(4)图像噪声
    查看>>
    SkyWalking性能剖析
    查看>>
    JavaScript——原生
    查看>>
    vue动态组件与插件到底是什么?
    查看>>
    还不知道做什么项目的看这里,【总结全网】Python入门实战项目
    查看>>
    【2021.5.8 NOI模拟】贪心
    查看>>
    python3下安装jupyter kernel报错问题
    查看>>
    计算机网络参考模型,图文详解,更懂你!
    查看>>
    mybatis 简单学习
    查看>>