`
北落有鱼
  • 浏览: 893 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论
文章列表
  1、缓冲区Buffer   在NIO库中,所有数据都是用缓冲区(Buffer)处理的。缓冲区实质上是一个数组,通常它是一个字节数组(ByteBuffer),也可以使用其他种类的数组。但是一个缓冲区不仅仅是一个数组,缓冲区提供了对数据的结构化访问以及维护读写位置(limit、position)等信息。   2、通道Channel   Channel是一个通道,可以通过它读取和写入数据。通道与流的不同之处在于通道是双向的,流只是一个方向上移动(一个流必须是InputStream或者OutputStream的子类),而且通道可以同时用于读写。   3、多路复用器Selector   多 ...
   采用BIO通信模型的服务端,通常由一个独立的Acceptor线程负责监听客户端的连接,它接收到客户端连接请求之后为每个客户端创建一个新的线程进行链路处理,处理完成之后,通过输出流返回应答给客户端,线程销毁。Blocking-IO是典型的一请求一应答的模型。   该模型最大的问题就是缺乏弹性伸缩能力,当客户端并发访问量增加后,服务端的线程个数和客户端并发访问数量呈1:1的正比关系。由于线程是虚拟机非常宝贵的系统资源,随着并发访问量的不断增长,需求的线程数也会不断上升,可能会导致线程堆栈溢出、创建新线程失败等问题,最终会引起服务器宕机或僵死。   对于这个模型的优化,有一个伪异步的实现 ...
Global site tag (gtag.js) - Google Analytics