IO模型
bio
- 同步阻塞,每个io占用一整个线程,直到获取结果
- 阻塞IO的方式,一个连接消耗一个线程,开发简单但并发时消耗大
nio:
- 同步非阻塞,轮询的方式,selector反复询问结果
- 非阻塞IO的方式,基于事件驱动,reactor(反应器,反应堆)模式,jdk1.4后
aio:
- 异步非阻塞,操作系统获取结果,通过回调告知
- 异步IO,采用proactor(前摄机)模式,jdk1.7后
netty:nio的使用者
框架
- MINA
- Netty(nio)
引用
所谓事件驱动,简单地说就是你点什么按钮(即产生什么事件),电脑执行什么操作(即调用什么函数).当然事件不仅限于用户的操作. 事件驱动的核心自然是事件。从事件角度说,事件驱动程序的基本结构是由一个事件收集器、一个事件发送器和一个事件处理器组成。事件收集器专门负责收集所有事件,包括来自用户的(如鼠标、键盘事件等)、来自硬件的(如时钟事件等)和来自软件的(如操作系统、应用程序本身等)。事件发送器负责将收集器收集到的事件分发到目标对象中。事件处理器做具体的事件响应工作,它往往要到实现阶段才完全确定,因而需要运用虚函数机制(函数名往往取为类似于HandleMsg的一个名字)。对于框架的使用者来说,他们唯一能够看到的是事件处理器。这也是他们所关心的内容。