福州网站建设专业定制,在线crm管理系统,天津建设项目招投标网站,过年做哪些网站致富java NIO与BIO的区别#xff1f;
BIO -- Blocking IO 即阻塞式 IO。NIO -- Non-Blocking IO, 即非阻塞式 IO 或异步 IO。
BIO 基于字节流和字符流进行操作#xff0c;数据的读取写入必须阻塞在一个线程内等待其完成。
NIO 主要有三大核心部分#xff1a;
Channel (通道)…java NIO与BIO的区别
BIO -- Blocking IO 即阻塞式 IO。NIO -- Non-Blocking IO, 即非阻塞式 IO 或异步 IO。
BIO 基于字节流和字符流进行操作数据的读取写入必须阻塞在一个线程内等待其完成。
NIO 主要有三大核心部分
Channel (通道)所有的 NIO 操作始于通道通道是数据来源或数据写入的目的地。Buffer (缓冲区)一个 Buffer 本质上是内存中的一块我们可以将数据写入这块内存之后从这块内存获取数据Selector (选择器、多路复用器)多路复用用于实现一个线程管理多个 Channel NIO 基于 Channel 和 Buffer 进行操作数据总是从通道读取到缓冲区中或者从缓冲区写入到通道中。Selector 用于监听多个通道的事件比如连接打开数据到达。因此单个线程可以监听多个数据通道处理多个事件。
综上它们之间的区别有1、BIO面向流的只能读或者只能写同步阻塞 IO 模式2、NIO面向块的缓冲区可以同时进行读写同步阻塞 IO 模式 同步阻塞、同步非阻塞、异步的区别
同步阻塞调用者发出请求后会一直等待结果
同步非阻塞调用者发出请求后就去执行其他任务过一会再询问被调用者执行结果
异步当一个异步过程调用发出后调用者不会立即得到结果。而是在“发出后”“被调用者“通过状态来通知调用者或通过回调函数处理这个调用
阻塞式IO、非阻塞式IO甚至包括多路复用IO都是基于操作系统级别对“同步IO”的实现