1、什么是Java NIO?
同步非阻塞io模式,拿烧开水来说,NIO的做法是叫一个线程不断的轮询每个水壶的状态,看看是否有水壶的状态发生了改变,从而进行下一步的操作。
Java NIO有三大组成部分:Buffer;Channel;Selector。
通过事件驱动模式实现了什么时候有数据可读的问题。 Channel:相当于IO操作的载体,相当于一个硬件设备,一个文件,一个socket或是区别程序中的不同IO操作,如read,write。
channel类似流,但又有些不同: 既可以从通道中读取数据,又可以写数据到通道。但流的读写通常是单向的。 通道可以异步地读写。 通道中的数据总是要先读到一个Buffer,或者总是要从一个Buffer中写入。
Buffer:用于和NIO通道进行交互。如你所知,数据是从通道读入缓冲区,从缓冲区写入到通道中的。 缓冲区本质上是一块可以写入数据,然后可以从中读取数据的内存。这块内存被包装成NIO Buffer对象,并提供了一组方法,用来方便的访问该块内存。 channel 和 buffer 之间的交互如下:

Selector:Selector(选择器)是Java NIO中能够检测一到多个NIO通

本文介绍了Java NIO(非阻塞I/O)和BIO(阻塞I/O)的区别。NIO通过Selector实现单线程管理多个Channel,减少线程资源消耗,适合高并发场景。而BIO则在等待数据读写时会阻塞线程,资源利用率较低。文中还提供了NIO和BIO服务器的示例代码,以及Java学习视频推荐。
最低0.47元/天 解锁文章
6624

被折叠的 条评论
为什么被折叠?



