mina

很长时间对mina的实现非常好奇,这两天不太忙,把源代码认真看了下,基本上搞清楚了,记一下备忘,顺便说一下网上那么多阅读mina的sb,我不知道他们最终是弄懂了还是没懂,总之我看他们的大块文章总是没有看代码来的快来的直接。

1. acceptor runnable in pollingimpl

  负责接受请求,随后转给processor。

  pollingimpl有一个selector,一个线程池,一个SimpleProcessorPool(这个pool中有cpu+1那么多processor,他们共用另一个线程池,每一个都有自己的selector)

2. processor runnable in pollingimpl

  负责读写,服务器端和客户端重用它。

  它是上边那个池子中的一员,1接受后创建session并扔给了2

3. connector runnable in pollingimpl

  调用socketchannel.connect后如果返回true,创建session并扔给2;否则注册到selector,被1接受后再扔给2。

  一个selector,一个线程池,一个SimpleProcessorPool

这是内部的框架实现。剩下用户需要定义的就是filter和handler了。还有一些config,sessiondictionaryfactory,等等,你可以忽略。

原文地址:https://www.cnblogs.com/jvava/p/3685917.html