java中io和nio
java中io和nio
形式不同流和缓存
io是面向流的,意思就是每次从流中读取一个或多个字节,直到读到流的结束位置,它没有缓存,
如果需要前后移动读取数据,需要将流先放入缓存中
nio是面向缓存的,就是可以灵活读取数据,只要注意不要覆盖尚未处理的数据
阻塞和非阻塞区别
io是阻塞的,阻塞是什么意思呢,就是线程在进行read()和write()操作时,线程被阻塞,直到数据完全处理完成
nio是非阻塞的,也就是线程read(),write()时,有数据就进行处理,没有数据时,可以做其他事情。所有在非阻塞模式中,一个线程可以管理多个通道channel
IO和NIO如何影响程序设计?
从三个方面来讲
- 1不同类API调用
nio下应该先将流数据读入缓存区 nio下应该先将流数据读入缓存区
- 2数据处理
io下是一行一行读的,因此在读取一行数据过程中是不能处理其他事情,且读完之后也不能进行数据回退
nio下是先将数据读入缓存区,直到缓存区满
- 3用来处理数据线程数
nio可以用一个线程来处理多个通道,哪个通道里数据就绪,就可以切换过去先处理
不同场景中nio和io的选择,需要实际考虑,nio在聊天,数据传输少的情况下有优势
以上是 java中io和nio 的全部内容, 来源链接: utcz.com/z/516881.html