1. 网络编程为什么能异步来做
因为网络IO channel支持异步(文件channel是不支持异步IO的);
网络IO channel为什么支持异步
因为操作系统帮我们缓存了从网络上接收到的数据,而且当我们监听网卡事件后,操作
系统可以提醒我们有数据到了(在应用程序发送请求后,应用程序只需要订阅网卡事件就行,然后可以去做
其他事情,这就是异步);
因为缓存的存储一定会有限制,那么就需要一个超时来指定一些策略等踢出“过期”的数据(没有处理的或者其他);
所以两个端交互的异步必须需要两点来保证:
有一个组件可以替我们缓存对端数据;
有一个组件可以通知我们当数据来的时候通知我们(我们得事先订阅他);
2. 延伸
其实,上面所讲的,可以用一个概念来加强理解:事件驱动。关于事件驱动编程领域,有三个概念是必不可少的:事件源(在其上发生事件)、事件、订阅(注册)