zoukankan      html  css  js  c++  java
  • Java IO与NIO

    IO与NIO(非阻塞IO)之间的区别:

    IO NIO
    面向流 面向缓存
    阻塞 非阻塞
    - 选择器

     

    1. 流与缓存

        Java IO是面向流的,意味着每次从流中读一或多个字节,直到读取所有的字节,它们是没有缓存在任何地方。此外,它们不能前后移动流中的数据,如果需要移动,需先将它们缓存到一个缓冲区。

        Java NIO是面向缓存的,数据读取到一个稍后处理的缓存,需要时可在缓存中前后移动,这就增加了处理过程中的灵活性。但还需要检查是否该缓存包含所有需要的数据,而且,需确保当更多的数据读入缓存时,不要覆盖缓存中尚未处理的数据。

     

    2. 阻塞与非阻塞

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

        Java NIO是线程向某通道发送请求读取数据,仅能得到目前可用的数据,如果没有,就什么都不做,当然它不会保持线程阻塞,所以直至数据可以读取之前,该线程可以做其他事情。

     

    3. 选择器

        Java NIO的选择器允许一个单独的线程来监视多个输入通道。

  • 相关阅读:
    GCC默认的标准不是ANSI C,而是GNU C90
    C/C++预定义宏
    GCC对C标准的支持
    Tupper's selfreferential formula
    VC++对C标准的支持
    一道笔试题
    C语言标准
    FLVPlayback视频
    getDefinitionByName与ApplicationDomain.getDefinition
    SVN
  • 原文地址:https://www.cnblogs.com/jiqianqian/p/6568127.html
Copyright © 2011-2022 走看看