更新时间:2020-05-07 14:50:51 来源:极悦 浏览2337次
以BIO形式的文件读取和复制:
NIO读取过程:
NIO形式的读取和复制
阻塞IO和非阻塞IO这两个概念是程序级别的。主要描述的是程序请求操作系统IO操作后,如果IO资源没有准备好,那么程序该如何处理的问题:前者等待;后者继续执行(并且使用线程一直轮询,直到有IO资源准备好了)。
同步IO和异步 IO,这两个概念是操作系统级别的。主要描述的是操作系统在收到程序请求IO操作后,如果IO资源没有准备好,该如何响应程序的问题:前者不响应,直到IO资源准备好以后;后者返回一个标记(好让程序和自己知道以后的数据往哪里通知),当IO资源准备好以后,再用事件机制返回给程序。
同步阻塞IO(JAVABIO):
服务器实现模式为一个连接一个线程,每当客户端有连接请求时服务器端就需要启动一个线程进行处理。而且服务器需要一直处于等待状态,一直在 accept();。如果这个连接不做任何事会造成不必要的开销。
同步非阻塞IO(JavaNIO):
服务器实现模式为一个请求一个线程,即客户端发送的连接请求都会注册到多路复用器上,多路复用器轮询到连接有I/O请求时才启动一个线程进行处理。用户进程也需要时不时的询问IO操作是否就绪,这就要求用户进程不停的去询问。
异步阻塞IO(JavaNIO):
此种方式下是指应用发起一个IO操作以后,不等待内核IO操作的完成,等内核完成IO操作以后会通知应用程序,这其实就是同步和异步最关键的区别,同步必须等待或者主动的去询问IO是否完成。(比如你买了一份快递,你不需要一天二十四小时去关注快递的状态,而是当快递到了或丢了等特殊情况下会通知你。)
阻塞是因为此时是通过select系统调用来完成的,而select函数本身的实现方式是阻塞的,而采用select函数有个好处就是它可以同时监听多个文件句柄从而提高系统的并发性!
还有更强的异步非阻塞(AIO)。
以上就是极悦java培训机构的小编针对“编程基础学习,用Java io流读取文件”的内容进行的回答,希望对大家有所帮助,如有疑问,请在线咨询,有专业老师随时为你服务。
0基础 0学费 15天面授
Java就业班有基础 直达就业
业余时间 高薪转行
Java在职加薪班工作1~3年,加薪神器
工作3~5年,晋升架构
提交申请后,顾问老师会电话与您沟通安排学习