当前位置: 首页 > ds >正文

【Java面试笔记:基础】11.Java提供了哪些IO方式? NIO如何实现多路复用?

在这里插入图片描述

在Java中,I/O操作是网络编程和文件处理的核心,其发展经历了从传统的BIO(Blocking I/O)NIO(Non-blocking I/O),再到**AIO(Asynchronous I/O)**的演进。

1. Java 提供的 IO 方式

  • 传统同步阻塞 IO(BIO)
    • 特点:基于流模型实现,代码简单直观,但扩展性和性能存在局限性。
    • 应用场景:适合连接数较少的场景,如简单的文件操作或少量客户端的网络通信。
    • 缺点:线程数随连接数线性增长,资源消耗大,无法支撑高并发。
    • 示例InputStreamOutputStreamReaderWriterSocketServerSocket
// 服务端代码(单线程阻塞)
ServerSocket serverSocket = new ServerSocket(8080);
while (true) {Socket socket = serverSocket.accept(); // 阻塞等待连接new Thread(() -> {// 处理请求(读写操作也会阻塞)}).start();
}
  • NIO(New IO)
    • 特点:引入了 ChannelSelectorBuffer 等新的抽象,支持多路复用的同步非阻塞 IO
    • 应用场景:适合高并发场景,如服务器端
http://www.xdnf.cn/news/1482.html

相关文章:

  • 哪些心电图表现无缘事业编体检呢?
  • Linux程序地址空间
  • 【maven-7.1】POM文件中的属性管理:提升构建灵活性与可维护性
  • 《Cesium 中两点绘制线的实现:实线、虚线、动态线、流动线详解》
  • 元素滚动和内容垂直居中同时存在,完美的 html 元素垂直居中的方法flex + margin: auto
  • Java 中 String 转 Integer 的方法与底层原理详解
  • Elasticsearch(ES)中的脚本(Script)
  • 设备沟通不再“鸡同鸭讲”EtherCAT转Profinet网关助力工业互联新升级!
  • SpringMVC从入门到上手-全面讲解SpringMVC的使用.
  • BUUCTF jarvisoj_test_your_memory
  • 电控---DMP库
  • C语言(1)—C语言常见概念
  • xcode 16 遇到contains bitcode
  • visio导出的图片过大导致latex格式转成pdf之后很不清楚
  • 缩放点积注意力
  • 新书速览|Hadoop与Spark大数据全景解析(视频教学版)
  • STM32F4 W25Q64存储芯片详解:特性以及应用
  • Java 集合:泛型、Set 集合及其实现类详解
  • 房屋租赁管理系统
  • 具身智能操作知识梳理与拓展
  • 第六章 QT基础:4、QT的TCP网络编程
  • FEKO电磁仿真软件许可类型
  • 【特殊场景应对6】频繁跳槽:行业特性与稳定性危机的解释边界
  • Rust 语言使用场景分析
  • 多源数据集成技术分析与应用实践探索
  • 【Element Plus】解决移动设备使用 el-menu 和 el-sub-menu 时,子菜单需要点击两次才会隐藏的问题
  • 记录一下线性回归的学习
  • 极狐GitLab 如何撤销变更?
  • 数据结构线性表的顺序存储结构
  • c语言之杂识