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

回到顶部