每建立一个Socket连接时,同时创建一个新线程对该Socket进行单独通信(采用阻塞的方式通信)。这种方式具有很高的响应速度,并且控制起来也很简单,在连接数较少的时候非常有效,但是如果对每一个连接都产生一个线程的无疑是对系统资源的一种浪费,如果连接数较多将会出现资源不足的情况。
NIO 设计背后的基石:反应器模式,用于事件多路分离和分派的体系结构模式。 反应器模式的核心功能如下:将事件多路分用;将事件分派到各自相应的事件处理程序;NIO 的非阻塞 I/O 机制是围绕 选择器和 通道构建的。 Channel 类表示服务器和客户机之间的一种通信机制。Selector 类是 Channel 的多路复用器。 Selector 类将传入客户机请求多路分用并将它们分派到各自的请求处理程序。通道(Channel 类):表示服务器和客户机之间的一种通信机制。 选择器(Selector类):是 Channel 的多路复用器。Selector 类将传入的客户机请求多路分用并将它们分派到各自的请求处理程序。
简单的来说:NIO是一个基于事件的IO架构,最基本的思想就是:有事件我通知你,你再去做你的事情。而且NIO的主线程只有一个,不像传统的模型,需要多个线程以应对客户端请求,也减轻了JVM的工作量。实际上,异步socket的核心,即异步socket不过是将多个socket的调度(或者还有他们的线程调度)全部交给操作系统自己去完成,异步的核心Selector,不过是将这些调度收集、分发而已。
MINA是一个网络应用框架,在不牺牲性能和可扩展性的前提下用于解决如下问题: