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

posted on 2020-10-15 20:01  码农记录  阅读(215)  评论(0编辑  收藏  举报

导航