Java.nio使用总结(一)——使用简述
类图
首先让我们先看看今天的主角们的关系
ByteBuffer
ServerSocketChannel
SocketChannel
为什么会存在Java.nio?
前看
在学习nio这个包之前,先让我们了解一下为什么要学习nio,或者说什么nio。
首先让看一下这个包的名称nio,故名思意其意义便是New IO,即新的IO包。其是区别于我们之前的IO包的。
nio vs io
下面就让我们了解一下nio和io的最大区别————nio为非阻塞的io,而io则为阻塞的io。
那么何为阻塞io?何为非阻塞io?
==阻塞io==:在程序执行io操作时,程序等待io操作执行完毕(文件/数据读取结束),之后再进行其他的操作
(继续顺序执行下面的代码)
==非阻塞io==:在程序执行io操作时,程序不去等待io操作完结(无法返回值/不返回值),便去执行下面的代码。
代码中的体现便是(使用伪代码进行表示,假定io输出为”你好 世界“):
【io包中】
r = io.read()
sout(r)
sout("Hello World")
/**输出结果为
你好 世界
Hello World
*/
【nio中】
r = io.read()
sout(r)
sout("Hello World")
/**输出结果(可能)为
Hello World
*/
从以上的两个例子中我们不难看出java中,io和nio中的读写操作的区别。