BIO:server服务端主线程监听相关端口,接受发送到端口上的请求,然后创建线程创建子线程,建立通信套接字,后面的事情都是子线程去干。主线程继续监听端口接受客户端发送过来的数据和连接请求。(即每个请求都会创建一个线程,同步阻塞)
NIO:server服务端主线程监听相关端口,接受发送到端口上的连接请求,若同时有多个客户端连接请求到来也可以全部收到,依次为它们都建立通信套接字。 如果是已经建立socket连接的请求,可以直接调用对应的接口处理请求数据。实现的核心在于多路复用器。(同步非阻塞) 只有在需要进行IO传输时,才分配线程处理进行Io传输,没有IO空闲时,不分配线程。
channel通道:是socket IO流与buffer通道的传输通道。
buffer缓冲区:channel传输过来的IO流数据保存在buffer中。
buffer提高io传输效率的原因,io耗时主要花费在数据传输上,普通的io是一个字节一个字节的读取,而buffer采用的是一行一行读取的方式。
APR:tomcat 以JNI形式调用Apache http服务器的核心动态链接库来处理文件读取或网络传输操作,需要编译安装APR库。
AIO:异步非阻塞,tomcat8.0后支持。AIO是对NIO的进一步优化,NIO是由线程尝试获取系统IO权限,然后进行io操作,而AIO是由系统获取IO权限并进行IO操作。