Java IO和NIO 知识点
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
上一篇: java8 时间操作
推荐阅读
-
详解java nio中的select和channel
-
JAVA中的NIO (New IO)
-
J03-Java IO流总结三 《 FileInoutStream和FileOutputStream 》
-
J04-Java IO流总结四 《 FileReader和FileWriter 》
-
Java的BIO,NIO和AIO的区别于演进
-
J05-Java IO流总结五 《 BufferedInputStream和BufferedOutputStream 》
-
javaNIO实战-- java NIO的非阻塞式IO网络编程UDP协议实战
-
J07-Java IO流总结七 《 InputStreamReader和OutputStreamWriter 》
-
高级Java工程师必备 ----- 深入分析 Java IO (二)NIO
-
扎心一问:NIO 和 IO 到底有什么区别?