1.同步和异步
同步和异步是一种机制
同步:总是按照“客户端请求一次,服务端应答一次”这样的有序序列处理业务,只有当“一次请求一次应答”的过程结束才可以发生下一次的“一次请求一次应答”,那么就说他们采用的是同步。
异步:如果客户端只要有需要,就会发送请求,不管上次请求有没有得到服务端应答。而服务端只要甲方有请求就会接受,不是等这次请求处理完毕再接受客户端新请求。这样请求应答分开的序列,就可以认为是异步。异步情况下,请求和应答不需要一致进行,可能客户端后请求的业务,却先得到服务端的应答。同步是线性的,而异步可以认为是并发的。
2.阻塞和非阻塞
阻塞和非阻塞是一种等待结果的状态
阻塞调用:调用结果返回之前,当前线程会被挂起。调用线程只有在得到结果之后才会返回。
非阻塞调用:在不能立刻得到结果之前,该调用不会阻塞当前线程。
3.小结
简单讲,Java NIO的非阻塞模式就是,使一个线程从某通道发送请求读取(或者写入)数据;
他不是保持线程阻塞,所以在读取(或者写入)数据前,该线程可以继续做其他的事情。
4.IO VS NIO 的比较 (不同之处)
1.IO只能实现阻塞式的网络通信。NIO能够实现非阻塞的网络通信.(废话)
2.标准IO基于字节/字符流进行操作;而NIO是基于通道(Channel)进行操作的。
3.流的读写通常是单向的,要么输入,要么输出,不能既是输入流又是输出流。通道是双向的,既可以写数据到通道,又可以从通道中读取数据;
网友评论