Java IO

在Java的发展过程中,IO演变了多种形式,目的是为了满足实际业务所需,IO即(Input和Output的首字母), 是指最基础的输入和输出
java中支持的网络编程模型IO模式共三种:BIO(Blocking IO)1、NIO(New IO)2、AIO(Asynchronous IO)3

了解同步/异步、阻塞/非阻塞

在IO操作中,IO分为两个阶段

  1. 数据准备阶段

  2. 将数据从内核空间复制到用户进程缓冲区(即:用户空间)4阶段

同步和异步

同步:是指用户线程发起I/O请求后需要等待或轮询内核I/O操作完成后,才能继续执行

异步:是指用户线程发起I/O请求后,仍需要继续执行,当内核I/O操作完成后会通知用户线程,或调用用户线程注册的回调函数

阻塞和非阻塞

阻塞:是指I/O操作需要彻底完成后才能返回用户空间

非阻塞:是指I/O操作被调用后立即返回一个状态值,不需要等待I/O操作彻底完成
在这里插入图片描述

同步与异步、阻塞与非阻塞图解

要了解什么是IO,避不开网络IO模型,我们一般讨论的网络IO模型都是基于Linux环境。

Linux的五种网络IO模型

IO流(BIO)

NIO流(多路复用技术)

AIO(异步IO)

IO多路复用模型原理

序列化


  1. Java原生IO,同步阻塞的IO模型 ↩︎

  2. NIO在官方解释是New IO,但其实是包含了AIO的,只是在业务上,我们区分NIO和AIO的关键就是同步非阻塞(NIO)与异步非阻塞(AIO) ↩︎

  3. AIO表示基于Channel的异步非阻塞IO模型 ↩︎

  4. 在操作系统中,程序运行的空间分为内核空间和用户空间,应用程序都是运行在用户空间,所以它们能操作的数据也都在用户空间 ↩︎

  • 14
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Java IO(Input/Output)是Java编程语言中用于处理输入和输出的基础库。它提供了一种方便的方式来读取和写入数据,从而与外部世界进行交互。 Java IO库包含多个类和接口,用于在不同的场景下处理输入和输出。这些类和接口可以分为字节流(Byte Stream)和字符流(Character Stream)两种类型。 字节流主要用于处理二进制数据,而字符流则用于处理文本数据。 常用的字节流类有: - InputStream和OutputStream:用于读取和写入字节数据。 - FileInputStream和FileOutputStream:用于读取和写入文件。 - BufferedInputStream和BufferedOutputStream:提供了缓冲功能,以提高读写的效率。 常用的字符流类有: - Reader和Writer:用于读取和写入字符数据。 - FileReader和FileWriter:用于读取和写入文本文件。 - BufferedReader和BufferedWriter:提供了缓冲功能,以提高读写的效率。 除了字节流和字符流之外,Java IO还提供了一些其他的类和接口,用于处理特定类型的输入和输出。例如: - DataInputStream和DataOutputStream:用于读写基本数据类型及字符串。 - ObjectInputStream和ObjectOutputStream:用于读写Java对象。 - PrintWriter:用于格式化输出。 在使用Java IO时,通常需要使用try-catch语句来捕获可能抛出的异常,例如IOException。 总结起来,Java IOJava编程语言中用于处理输入和输出的基础库,提供了字节流和字符流两种类型的处理方式,并且还包含其他一些类和接口,用于处理特定类型的输入和输出。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Carl·杰尼龟

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值