zoukankan      html  css  js  c++  java
  • Java Aio

    1.简述

      AIO是Java中IO模型的一种,作为NIO的改进和增强随JDK1.7版本更新被集成在JDK的nio包中,因此AIO也被称作是NIO 2.0。区别于传统的BIO(Blocking IO,同步阻塞式模型,JDK1.4之前就存在于JDK中,NIO于JDK1.4版本发布更新)的阻塞式读写,AIO提供了从建立连接到读、写的全异步操作。AIO可用于异步的文件读写和网络通信。

      异步IO采用“订阅-通知”模式:即应用程序向操作系统注册IO监听,然后继续做自己的事情。当操作系统发生IO事件,并且准备好数据后,在主动通知应用程序,触发相应的函数。

    2.AIO主要API详解

      AIO主要在NIO的Channels包下增加了四个异步通道

    • AsynchronousSocketChannel:客户端Socket通道类,负责客户端消息读写。
    • AsynchronousServerSocketChannel:服务端Socket通道类,负责服务端Socket的创建和监听。
    • AsynchronousFileChannel:负责异步读取、写入文件。
    • AsynchronousDatagramChannel:

      AIO的缺点

    • 实现复杂。
    • 需要额外的技能、资料也较少。
    • 一个著名的Selector空轮询bug,它会导致CPU100%。
    • 可靠性差

      因为资料较少所以不写了,最后总结如下

        AIO使用情况较少,基本不会用到,网上的资料也较少,使用时出现问题不好解决。所以尽量不要使用,当然这只是个人观点。

  • 相关阅读:
    常见linux内核线程说明
    /proc/modules分析
    linux用户空间和内核空间(内核高端内存)_转
    二层交换机/三层交换机/路由器
    NAT--Network Address Translator
    curl命令使用
    (转)XML中必须进行转义的字符
    LFCP
    IPSP问题
    API和schema开发过程问题汇总
  • 原文地址:https://www.cnblogs.com/bl123/p/13821138.html
Copyright © 2011-2022 走看看