Tomcat有三种处理模式,分别为 BIO 、NIO 、APR。
1> BIO
同步阻塞,服务器的实现模式是一个连接一个线程,也就是说客户端有连接请求时服务器需要启动一个线程来进行处理,如果连接起来后不做任何事情会造成不必要的线程开销,不过可以用线程池机制来改善。
优点:模型简单,编码简单。
缺点:并发量高时,线程数较多,浪费资源。
2> NIO
和 BIO 不同, NIO 是异步处理的,可以通过少量的线程处理大量的请求,也就是在 IO 操作的阻塞线程的时候把线程释放掉,让线程去处理其他的没有阻塞socket的io流去。这样就提高了线程的利用率,相同的线程可以处理的socket连接要比BIO模式更多了。
优点: 不需要使用 read() 或者 write() 操作就可以处理文件内容,修改文件后,修改自动 flush 到文件, nio 方式能很快处理大文件和处理效率很快.
3> APR
简单理解,就是从操作系统级别解决异步 IO 问题,大幅度的提高服务器的处理和响应性能,也是 Tomcat 运行高并发应用的首选模式。