博客
关于我
Netty工作笔记0003---IO模型-BIO-Java原生IO
阅读量:790 次
发布时间:2023-02-14

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

技术交流QQ群:【JAVA,C++,Python,.NET,BigData,AI】:170933152

复习

以前对网络的要求小的时候,使用Java BIO;

后来,对网络通信的要求提高了,就出现了NIO;

然后又出现了AIO;

要知道服务器和客户端的通信方式,是阻塞的、非阻塞的、异步的,还是同步的,这些概念对性能影响挺大的。

以前的Java BIO是基于阻塞式的,程序在等待I/O操作完成时会阻塞,这种方式简单易懂,但效率较低;

而NIO的出现,标志着Java对网络通信的处理方式发生了变化,采用了非阻塞式的方式,允许多个I/O操作同时进行,提升了处理效率;

随后,AIO(Asynchronous I/O)进一步发展,提供了更加灵活的通信方式,允许程序在不阻塞主线程的情况下,进行多个异步I/O操作。

服务器和客户端的通信方式主要有以下几种:

  • 阻塞式:服务器和客户端在进行I/O操作时会等待对方的数据传输完成,程序会在等待I/O操作时阻塞,响应速度较慢,但实现简单;

  • 非阻塞式:I/O操作不会阻塞程序,允许多个I/O操作同时进行,但需要程序主动轮询数据是否到达,增加了开发难度;

  • 异步式:与非阻塞式类似,但不需要程序主动轮询,而是通过事件驱动的方式,等待I/O事件的通知,减少了轮询带来的开销;

  • 同步式:服务器和客户端的操作是有序的,依赖于彼此的完成状态,响应速度较快,但灵活性较低。

  • 从技术发展来看,随着网络对数据处理要求的提高,Java BIO逐渐被NIO取代,NIO又为AIO铺垫了基础,各有其适用的场景。

    对于性能的影响,主要体现在:

  • I/O操作的效率:阻塞式效率低,非阻塞式和异步式效率更高;

  • 应用程序的响应速度:非阻塞式和异步式能够更好地处理大量并发连接;

  • 开发复杂度:异步式开发难度较高,需要更复杂的事件处理逻辑。

  • 选择哪种方式,需要根据具体应用场景进行权衡。

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

    你可能感兴趣的文章
    nacos集群配置详解
    查看>>
    nagios 实时监控 iptables 状态
    查看>>
    nagios+cacti整合
    查看>>
    Nagios介绍
    查看>>
    nagios利用NSCient监控远程window主机
    查看>>
    nagios安装文档
    查看>>
    nagios服务端安装
    查看>>
    Nagios自定义监控脚本
    查看>>
    name_save matlab
    查看>>
    Nami 项目使用教程
    查看>>
    Nancy之基于Nancy.Hosting.Aspnet的小Demo
    查看>>
    NAND NOR FLASH闪存产品概述
    查看>>
    nano 编辑
    查看>>
    NASA网站曝严重漏洞,或将沦为黑客钓鱼网站?
    查看>>
    Nash:轻量级、安全且可靠的脚本语言
    查看>>
    NAS、SAN和DAS的区别
    查看>>
    NAS个人云存储服务器搭建
    查看>>
    NAT PAT故障排除实战指南:从原理到技巧的深度探索
    查看>>
    nat 网卡间数据包转发_你是不是从来没有了解过光纤网卡,它跟普通网卡有什么区别?...
    查看>>
    NAT-DDNS内网穿透技术,快解析DDNS的优势
    查看>>