博客
关于我
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/

    你可能感兴趣的文章
    MySQL自带information_schema数据库使用
    查看>>
    MySQL获取分组后的TOP 1和TOP N记录
    查看>>
    MySQL蜜罐反制获取攻击者信息
    查看>>
    Mysql表创建外键报错
    查看>>
    mysql表格调取数据库信息_MySQL™ 参考手册(获取有关数据库和表的信息)
    查看>>
    WARN: Establishing SSL connection without server‘s identity verification is not recommended.
    查看>>
    MySQL视图
    查看>>
    mysql视图建立MERGE算法和TEMPTABLE算法的区别(效率与表锁定问题)
    查看>>
    Mysql解压版安装
    查看>>
    Mysql设置字符编码及varchar宽度问题
    查看>>
    MySQL设置白名单限制
    查看>>
    MySQL设置远程连接
    查看>>
    Mysql账号权限查询(grants)
    查看>>
    MySQL迁移到达梦:如何轻松、高质量完成迁移任务
    查看>>
    mysql返回的时间和实际数据存储的时间有误差(java+mysql)
    查看>>
    mysql还有哪些自带的函数呢?别到处找了,看这个就够了。
    查看>>
    mysql进阶 with-as 性能调优
    查看>>
    mysql进阶-查询优化-慢查询日志
    查看>>
    wargame narnia writeup
    查看>>
    Mysql进阶索引篇03——2个新特性,11+7条设计原则教你创建索引
    查看>>