• 技术文章 >Java >Java基础

    java nio与io的区别

    王林王林2019-11-09 16:57:59原创1634

    Java中IO和NIO的主要区别,如图:

    ee4da0ae2f14573d9c08f0d6d2662d0.png

    1、面向流与面向缓冲

    IO是面向流的,NIO是面向缓冲区的。

    Java IO面向流意味着每次从流中读一个或多个字节,直至读取所有字节,它们没有被缓存在任何地方。

    Java NIO的缓冲导向方法略有不同。数据读取到一个它稍后处理的缓冲区,需要时可在缓冲区中前后移动。

    2、阻塞与非阻塞IO

    Java IO的各种流是阻塞的。当一个线程调用read() 或 write()时,该线程被阻塞,直到有一些数据被读取,或数据完全写入。

    Java NIO的非阻塞模式,使一个线程从某通道发送请求读取数据,但是它仅能得到目前可用的数据,如果目前没有数据可用时,就什么都不会获取,而不是保持线程阻塞,所以直至数据变的可以读取之前,该线程可以继续做其他的事情。

    3、选择器

    Java NIO的选择器允许一个单独的线程来监视多个输入通道,你可以注册多个通道使用一个选择器,然后使用一个单独的线程来“选择”通道:这些通道里已经有可以处理的输入,或者选择已准备写入的通道。这种选择机制,使得一个单独的线程很容易来管理多个通道。

    推荐教程:java教程

    以上就是java nio与io的区别的详细内容,更多请关注php中文网其它相关文章!

    声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。
    专题推荐:java nio io 区别
    上一篇:java =和==的区别 下一篇:自己动手写 PHP MVC 框架(40节精讲/巨细/新人进阶必看)

    相关文章推荐

    • Java NIO原理分析与基本使用• Java中关于NIO核心组件的详细介绍• JAVA IO 以及 NIO 理解• 常见JAVA中IO/NIO模型
    1/1

    PHP中文网