BIO/NIO/AIO

BIO—同步阻塞

在Jdk1.4之前,用Java编写网络请求都是建立在一个ServerSocket上,然后客户端简历Socket时会询问是否有线程可以处理:如果没有,要么拒绝,要么等到

  • 一个连接,要求Server对应一个处理线程

NIO—同步非阻塞

Jdk1.4之后新加入的网络编程jar包

  • 在java.nio包及其子包内

  • 基于事件驱动思想来完成的,其主要想解决的是BIO大并发问题

  • NIO基于Reactor设计模式,当socket有流可读或可写入socket时,操作系统会相应的通知应用程序进行处理,应用程序再将流读取到缓冲区/写入操作系统

AIO—异步非阻塞

  • 对于读操作而言,当有流可读取时,操作系统会将可读的流传入read方法的缓冲区,并通知应用程序

  • 对于写操作而言,当操作系统将write方法传递的流写入完毕时,操作系统主动通知 应用程序

  • 在Jdk1.7中被引入AIO,被称作NIO.2,主要在java.nio.channels中