二、IO线程模型+传统阻塞IO模型介绍
一、线程模型基本介绍
不同的线程模型,对程序的性能有很大影响。
目前存在的线程模型有:
- 传统阻塞 I/O 服务模型
- Reactor 模型
根据 Reactor 的数量和处理资源池线程的数量不同,有 3 种典型的实现 :
- 单 Reactor 单线程
- 单 Reactor 多线程
- 主从 Reactor 多线程
Netty 线程模式(Netty 主要基于主从 Reactor 多线程模型做了一定的改进,其中主从 Reactor 多线程模型有多个 Reactor)
二、传统阻塞 I/O 服务模型
假设你是一个老师,让30个学生解答一道题目,然后检查学生做的是否正确,你创建30个分身,每个分身检查一个学生的答案是否正确。 这种类似于为每一个用户创建一个进程或者线程处理连接。
- 黄色的框表示对象
- 蓝色的框表示线程
- 白色的框表示方法(API)
模型特点 :
- 采用阻塞IO模式获取输入的数据
- 每个连接都需要独立的线程完成数据的输入,业务处理,数据返回
问题分析:
- 当并发数很大,就会创建大量的线程,占用很大系统资源
- 连接创建后,如果当前线程暂时没有数据可读,该线程会阻塞在read 操作,造成线程资源浪费