Netty:一、网络编程

BIO通信模型图

缺点:缺乏弹性伸缩能力,线程是非常宝贵的资源,为每个请求创建、销毁线程会在请求数膨胀时出现性能问题,甚至堆栈溢出、创建线程失败,最终导致进程宕机。

改进用线程池

NIO的关键概念

缓冲区Buffer

  • ByteBuffer(最常用)
  • CharBuffer
  • ShortBuffer
  • IntBuffer
  • LongBuffer
  • FloatBuffer
  • DoubleBuffer

通道Channel

  • SelectableChannel:针对网络读写
  • FileChannel:针对文件

多路复用器Selector

Selector会不断轮询在其上注册的Channel,如果某个Channel上面有新的TCP连接接入、读和写事件,这个Channel就处于就绪状态,会被Selector轮询出来,然后通过SelectionKey可以获取就绪Channel的集合,进行后续的I/O操作。JDK使用epoll()实现多路复用。

原文地址:https://www.cnblogs.com/fcb-it/p/13644075.html