目录
目前常见的I/O线程模型有:传统阻塞I/O服务模型和Reactor模式
传统阻塞I/O服务模型
模型特点:
- 采用阻塞I/O模式获取输入的数据
- 每个连接都需要独立的线程完成数据的输入、处理和返回
存在问题:
- 当并发数很大,就会创建大量的线程,占用很大系统资源
- 连接创建后,如果当前线程暂时没有数据可读,该线程会阻塞在 Handler对象中的
read
操作,导致上面的处理线程资源浪费
Reactor模式(分发者模式)
传统阻塞I/O线程模型,每个连接一个阻塞对象线程,存在资源的浪费,因此针对这个缺点,出现了Reactor模式,多个连接共用一个阻塞对象线程,阻塞对象监听多个连接,当某个连接有新的数据可以处理时,线程解除阻塞,将连接交给工作线程进行处理。
优势:
-
基于线程池复用线程资源:不必再为每个连接创建线程,