tomcat線程模型--NIO

Tomcat支持三種接收請求的處理方式

1)BIO 阻塞IO,對應 org.apache.coyote.http11.Http11Protocol

2)  NIO 非阻塞IO,基於selectort實現,對應 org.apache.coyote.http11.Http11NIOProtocol

3)  APR, 對應org.apache.coyote.http11.Http11AprProtocol

4) AIO  異步非阻塞IO, 對應 org.apache.coyote.http11.Http11NIO2Protocol

 

tomcat BIO線程模型

tomcat的NIO線程模型

è¿éåå¾çæè¿°

 

 

Acceptor: 監聽Socket消息,並見消息放入事件隊列

PollerEvent: 事件隊列

Poller: 默認爲單線程,從事件隊列中取出Socket, 交給Worker線程池處理

    Poller線程中維護了一個Selector對象,NIO就是基於Selector來完成的。

Worker: IO處理線程池

 

NIO的實現過程:

1) Poller是NIO實現的主要線程

2) 首先作爲事件隊列的消費者,從隊列中取出PollerEvent對象

3) 將對象中的channel以OP_READ事件註冊到主Selecor中

4)主Selectotr執行select操作,遍歷出可以讀數據的socket

5) 將socket交給Worker線程池處理

NIO代碼解析

Http11NioProtocol類

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章