• 技术文章 >java >java基础

    java io和nio的区别

    小妮浅浅小妮浅浅2021-08-09 10:25:32原创4832

    1、Java IO和NIO之间第一个区别是,IO是面向流的,NIO是面向缓冲区的。

    Java IO面向流意味着每次都能从流中读取一个或多个字节。从流中读取多少字节完全取决于程序员。这些字节无法缓存到任何地方;也就是说,你不能从流中前后移动数据。如果你真的需要移动数据,你需要先在缓冲区缓存这些数据。

    Java NIO对Buffer的看法稍有不同。当数据被读取到buffer中时,buffer将在以后进行处理。如果您需要,您可以在buffer中移动数据;这使程序员在处理时更加灵活。但是,您必须检查buffer中是否包含您需要处理的所有数据。此外,您必须确保读取数据到达buffer时,您不能覆盖未处理的数据。

    阻塞与非阻塞IO

    2、Java IO中的各种流被堵塞,Java NIO是非阻塞模式保证线程要求从channel中读取数据。

    Java IO中的各种流被堵塞,也就是说,当调用read()方法和write()方法时,线程会被堵塞,直到数据被读取或完全写入。在此期间,处理流的线程将无法完成。

    Java NIO非阻塞模式保证线程要求从channel中读取数据,直到此时channel才能使用,或者如果此时没有数据可用,就什么也不做。而不是保存阻塞,直到数据可以读取,这里线程可以做其他事情。

    以上就是java io和nio的区别分析,主要体会在面向的对象、阻塞方面的不同,感兴趣的小伙伴也可以找一些实例进行练习。更多Java学习指路:Java基础

    本教程操作环境:windows7系统、java10版,DELL G3电脑。

    专题推荐:java io nio
    上一篇:java静态方法和非静态方法的介绍 下一篇:java进程和线程的关系

    相关文章推荐

    • java之JDK注解的介绍• java中@SuppressWarnings是什么意思• java对象分配内存的两种类型• java switch语句的执行过程• java类中的两种成员访问• java this关键字的使用注意• java ThreadLocal的创建和访问• java如何在表格添加水印• java类加载器的常用方法• java如何重写findClass方法• Java序列化是什么• Java反序列化如何理解• java单例中的饱汉模式实现• java单例中饿汉模式的使用• java懒汉和饿汉模式的区别• java单例模式中的Holder是什么• java枚举类型的原理• java静态方法和非静态方法的介绍

    全部评论我要评论

    © 2021 Python学习网 苏ICP备2021003149号-1

  • 取消发布评论
  • 

    Python学习网