java io流和nio的不同、差异

java nio和io的区别

IO NIO
阻塞、面向流、单向 选择器、非阻塞(只是相对网络IO而言)、面向缓冲区、双向

面向流:每次直接从一个流中读一个或多个字节
面向缓冲区:数据先被读入缓存区再进行处理
阻塞:当一个线程调用read或write方法,这个线程就会一直阻塞等待直到数据被读取或写完。再此期间,这个下次无法做任何事情。
非阻塞:当一个线程请求从通道channel读数据的时候,并且只是获取当前可用的数据,如果当前没有可用数据,则什么也得不到,而非一直阻塞等待直到要读的数据到来,这个线程可以先干别的事,也就是轮询别的通道。
选择器:java nio的选择器允许单个线程监视多个输入通道。你可以使用选择器注册多个通道,然后使用单个线程区选择可供处理的输入通道,或者选择已经准备能好读写的通道。

java io流和nio的不同、差异

java io流和nio的不同、差异