1.java网络编程之BIO/NIO/AIO对比:
1.举例:点单
同步阻塞:下单,等饭,直到做好,交接 BIO
同步非阻塞:下单,不等待,定时轮询,等好了,交接 NIO
异步非阻塞:下单,不等待,不轮询,好了,送家里 AIO
2.对比:
BIO:
服务端一个线程管理客户端一个连接:1v1
针对1个连接,需要等待获取响应结果,即为【阻塞】
【同步】:是指需要等待另一端操作完成,即【主动获取响应结果】
NIO:
服务端一个线程管理多个连接:1vN
针对一个连接,定时轮询,不等待执行结果,即为【非阻塞】
主动获取响应结果,即为【同步】
AIO:
服务端一个线程管理多个连接:1vN
针对一个连接,服务端将执行结果,通过回调方式主动告知客户端,为【异步】
客户端不用等待结果返回,为【非阻塞】
3.综上:
BIO 阻塞 同步 简单 客户机/服务器线程对比1:1 性能低 服务端N的线程1v1处理
NIO 非阻塞 同步 困难 客户机/服务器线程对比N:1 性能高 服务端一个线程轮询处理
AIO 非阻塞 异步 困难 客户机/服务器线程对比N:1 性能高 服务端一个线程回调异步通知