二、IO线程模型+传统阻塞IO模型介绍

一、线程模型基本介绍

不同的线程模型,对程序的性能有很大影响。

目前存在的线程模型有:

  • 传统阻塞 I/O 服务模型
  • Reactor 模型

根据 Reactor 的数量和处理资源池线程的数量不同,有 3 种典型的实现 :

  • 单 Reactor 单线程
  • 单 Reactor 多线程
  • 主从 Reactor 多线程

Netty 线程模式(Netty 主要基于主从 Reactor 多线程模型做了一定的改进,其中主从 Reactor 多线程模型有多个 Reactor)  


 

二、传统阻塞 I/O 服务模型

假设你是一个老师,让30个学生解答一道题目,然后检查学生做的是否正确,你创建30个分身,每个分身检查一个学生的答案是否正确。 这种类似于为每一个用户创建一个进程或者线程处理连接。

二、IO线程模型+传统阻塞IO模型介绍

  • 黄色的框表示对象
  • 蓝色的框表示线程
  • 白色的框表示方法(API)

模型特点 :

  • 采用阻塞IO模式获取输入的数据
  • 每个连接都需要独立的线程完成数据的输入,业务处理,数据返回

问题分析:

  • 当并发数很大,就会创建大量的线程,占用很大系统资源
  • 连接创建后,如果当前线程暂时没有数据可读,该线程会阻塞在read 操作,造成线程资源浪费