08 | JVM-IO

2019-06-17  本文已影响0人  小亮__

最近在学习NIO的知识,故整理一下相关知识,并使用网络IO的案例做以说明

BIO
BIO原理图

以上模型会有以下问题

  1. 服务器会为每个客户端请求建立一个Thread,由该线程单独负责处理一个客户请求。这种模式带来的一个问题就是线程数量的剧增,大量的线程会增大服务器的开销。大多数的实现为了避免这个问题,都采用了线程池模型,并设置线程池线程的最大数量,这由带来了新的问题,如果线程池中有200个线程,而有200个用户都在进行大文件下载,会导致第201个用户的请求无法及时处理,即便第201个用户只想请求一个几KB大小的页面。
    2 . 上述模型的另一个问题是,一个线程把一次交互的事情全部做了,包括读取,解码,计算,编码,响应,以及连接,线程的粒度太大
NIO
NIO-Recator模型

这种NIO的实现方式有select,poll,epoll等不同方式

Seletor模型:

poll模型:

epoll模型:

参考资料(http://www.sohu.com/a/119086870_505779
https://www.cnblogs.com/ivaneye/p/5731432.html

上一篇 下一篇

猜你喜欢

热点阅读