Java NIO

NIO和BIO区别

1. 面向流与面向缓冲

Java NIO和BIO之间第一个最大的区别是,BIO是面向流的,NIO是面向缓冲区的。

  • Java BIO面向流意味着每次从流中读一个或多个字节,直至读取所有字节,它们没有被缓存在任何地方。如果流的数据没有就位,那么一直阻塞着。
  • Java NIO的缓冲导向方法略有不同。数据读取到一个它稍后处理的缓冲区,需要时可在缓冲区中前后移动。这就增加了处理过程中的灵活性。
  • Java NIO当流(InputStream)未就位时,非阻塞
  • 但是:Java NIO还需要检查是否该缓冲区中包含所有您需要处理的数据。而且,需确保当更多的数据读入缓冲区时,不要覆盖缓冲区里尚未处理的数据。

2. 多路复用

BIO:一个线程管理一个连接
NIO:一个线程管理多个连接

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容