BIO AIO NIO
是
Java
中用于
I/O
操作的三种不同的编程模型。它们的区别在于它们执行I/O
操作的方式和效率。在讲 BIO,NIO,AIO
之前先来回顾一下这样几个概念:同步与异步,阻塞与非阻塞。
是
Java
中用于
I/O
操作的三种不同的编程模型。它们的区别在于它们执行I/O
操作的方式和效率。在讲 BIO,NIO,AIO
之前先来回顾一下这样几个概念:同步与异步,阻塞与非阻塞。
同步与异步
同步:同步就是发起一个调用后,被调用者未处理完请求之前,调用不返回。
异步:异步就是发起一个调用后,立刻得到被调用者的回应表示已接收到请求,但是被调用者并没有返回结果,此时我们可以处理其他的请求,被调用者通常依靠事件,回调等机制来通知调用者其返回结果。
同步和异步的区别最大在于异步的话调用者不需要等待处理结果,被调用者会通过回调等机制来通知调用者其返回结果。
阻塞和非阻塞
阻塞:阻塞就是发起一个请求,调用者一直等待请求结果返回,也就是当前线程会被挂起,无法从事其他任务,只有当条件就绪才能继续。
非阻塞:非阻塞就是发起一个请求,调用者不用一直等着结果返回,可以先去干其他事情
1. BIO是同步阻塞I/O模型,它使用一个线程来处理一个请求,如果这个请求没有被处理完,这个线程就会一直等待,直到请求处理完成。这种模型适用于连接数较小的情况。
2. NIO是同步非阻塞I/O模型,它使用单个线程来处理多个请求,这些请求可以同时被这个线程处理,它通过轮询的方式来处理I/O请求,如果有I/O请求就处理,没有就继续轮询。这种模型适用于连接数较多但是连接时间短的情况。
3. AIO是异步非阻塞I/O模型,这种模型不需要为每个请求创建一个线程,由操作系统内部的线程来处理 I/O请求,同时它也具有非阻塞的特性,I/O请求不会一直等待,而是异步执行。这种模型适用于连接数很多的情况。
举个生活中简单的例子
你妈妈让你烧水,小时候你比较笨啊,在那里傻等着水开(
同步阻塞
)。
同步阻塞
)。
后来,你们家用上了水开了会发出声音的壶,这样你就只需要听到响声后就知道水开了,在这期间你可以随便干自己的事情,你需要去倒水了(异步非阻塞
)。
)。
服务器托管,北京服务器托管,服务器租用 http://www.fwqtg.net
相关推荐: cannot use ‘/dev/da1’: must be a block device or regular file
FreeBSD在创建zpool时,出现cannot use ‘/dev/da1’: must be a block device or regular file错误,通过gpart show查看发现da1硬盘是 MBR 格式,而非GPT。 解决的方法是将 MB…