欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Java IO和NIO 知识点

程序员文章站 2022-06-24 18:50:43
传统的阻塞IO模型:用户线程会交出CPU等待数据准备完成,所以阻塞非阻塞IO模型:用户线程不会交出CPU,哪怕数据没准备就绪,拿到error,然后继续请求(循环条件是true,所以一直请求,不被阻塞)多路复用的IO模型(常见的、NIO):轮询socket状态,此操作是在内核中,非阻塞的是用户线程轮询,所以效率要比非阻塞的要高。信号驱动的IO模型:注册信号函数,被通知后在函数中执行实际的IO请求操作异步IO模型(最理想的):用户线程不会阻塞,等内核IO操作完成的通知就行,与信号驱动IO模型不同的是:用...

java iO 模型

传统的阻塞IO模型:用户线程会交出CPU等待数据准备完成,所以阻塞
非阻塞IO模型:用户线程不会交出CPU,哪怕数据没准备就绪,拿到error,然后继续请求(循环条件是true,所以一直请求,不被阻塞)
多路复用的IO模型(常见的、NIO):轮询socket状态,此操作是在内核中,非阻塞的是用户线程轮询,所以效率要比非阻塞的要高。
信号驱动的IO模型:注册信号函数,被通知后在函数中执行实际的IO请求操作
异步IO模型(最理想的):用户线程不会阻塞,等内核IO操作完成的通知就行,与信号驱动IO模型不同的是:用户线程再接收到信号后不用再次执行IO操作。

注意:异步IO模型是需要操作系统底层支持的(内核)

java io包
字节流InputStream/OutputStream:
字节数组输入流/输出流
文件输入流/输出流
过滤输入流/输出流
对象输入流/输出流
管道输入流/输出流
队列输入流
字符串缓存输入流

字符流Reader/Writer:
缓存Reader/Writer
字符数组Reader/Writer
过滤Reader/Writer
输入流Reader
输出流Writer
管道Reader/Writer
字符串Reader/Writer
打印Writer

java nio
1、Channel(通道)【重点:双向、4中实现】
2、Buffer(缓冲区)【重点:顶层父类、客户端数据存入客户端buffer,客户端buffer数据通过channel到服务端buffer,然后服务端从服务端buffer取数据】
3、Selector 【检测多个注册的通道上是否有事件发生、单线程可以管理多个通道】

最大的区别:传统IO就是字符流或者字节流,NIO基于通道和缓冲区。
Selector用于监听通道的事件,例如链接打开、数据达到

本文地址:https://blog.csdn.net/qq_36822420/article/details/109619662

相关标签: Java