共计 621 个字符,预计需要花费 2 分钟才能阅读完成。
咱们都晓得 IO 包含磁盘 IO 和网络 IO,绝对于 CPU 的速度,IO 性能差了好几个数量级,应用程序的瓶颈次要在 IO 这块。
NIO 的呈现就是为了优化 IO 性能,JDK1.4 之前 IO 都是应用流来进行 IO 操作,流操作都是单向的,读写都是阻塞的。JDK1.4 版本增加了 NIO,NIO 实际上是基于操作系统的新 IO 个性(select、poll、epoll)。
NIO 在 Java 中叫 New IO,多路复用 IO。NIO 的个性是零碎在进行 IO 操作时不会阻塞(在 select()和缓冲区拷贝时还是会阻塞),能够去干一些其余事件,你能够随时过去询问一下 IO 是否就绪。比方:你去菜市场买菜,你筹备买一只鸭子,你能够和老板说你要一只鸭子,然而鸭子还没有杀好,这时你能够和老板说,你先杀好,我过一会在来拿,这时你能够去买其余菜,待会在过去。这样的益处就是防止了期待(阻塞),让费系统资源。
传统的网络 IO 服务器实现
一个线程用来接管新的连贯 accept,每次有新的连贯过去后新开一个线程来解决这个连贯的 IO,或者应用连接池。这样一个线程在连贯断开之前只能始终服务于这个连贯,实际上连贯不是十分沉闷,这两头会导致极大的资源节约。而且操作系统有线程数量的限度,无奈有限的开启新线程来解决高并发的连接数。
NIO 网络服务器实现
绝对于传统 IO,Nio 可能高效的利用线程资源,因为 IO 非阻塞个性,一个线程能够解决多个连贯,这样雷同数量的连接池比照传统 IO 能够服务更多数量的连贯,进步服务器的并发能力。
正文完