天天看点

【网络编程】java网络编程之BIO/NIO/AIO对比

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    性能高     服务端一个线程回调异步通知