线程模型简介

2021-09-28  本文已影响0人  Joeyzz7000

线程模型简介

原声NIO存在的问题

原因: 在NIO中通过Selector的轮询当前是否有IO事件,根据JDK NIO api描述,Selector的select方法会一直阻塞,直到IO事件达到或超时,但是在Linux平台上这里有时会出现问题,在某些场景下select方法会直接返回,即使没有超时并且也没有IO事件到达,这就是著名的epoll bug,这是一个比较严重的bug,它会导致线程陷入死循环,会让CPU飙到100%,极大地影响系统的可靠性,到目前为止,JDK都没有完全解决这个问题。

线程模型

传统阻塞I/O服务模型

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

应用程序.png

Reactor模型

Reactor模式使用IO复用监听事件, 收到事件后, 分发给某个线程(进程), 这点就是网络服务器搞并发处理关键

Reactor模型-Reactor 单线程

优点

缺点

应用程序.png

Reactor模型-Reactor 多线程

优点

缺点

应用程序.png

Reactor模型- 主从Reactor 多线程

优点

缺点

上一篇 下一篇

猜你喜欢

热点阅读