Socket接收器——Acceptor
来源:互联网 发布:淘宝店铺怎么快速升级 编辑:程序博客网 时间:2024/06/06 03:46
Acceptor是JIoEndpoint的内部类,主要的职责就是监听是否有客户端套接字连接并接收socket,再将socket交由任务执行者(Executor)执行。不断从系统底层读取socket,接着做尽可能少的处理(最好就是接收到后不做任何处理),最后扔进线程池。为什么强调要做尽可能少的处理?这里关系到系统性能问题,过多的处理会严重影响吞吐量。因为tomcat默认只有一个接收器(一条线程负责套接字接收工作),所以它对每次接收处理的时间长短将很可能对整体性能产生影响。
于是接收器所干的活都是非常少且简单的,仅仅维护了几个状态变量、流量控制闸门的累加操作、serverSocket的接收操作、设置接收到的socket的一些属性、将接收到的socket放入线程池以及一些异常处理。其他需要较长时间处理的逻辑就交给了线程池,例如对socket底层数据的读取,对http协议报文的解析及响应客户端的一些操作等等。很精妙地将事务剥离,远远提升了系统处理响应性能。
图Acceptor
用一个简化的代码表示接收器处理的过程则是
publicclass Acceptor implements Runnable{
public void run(){
while(true){
limitLatch.countUpOrAwait();//流量控制闸门信号量加一
Socket socket =serverSocket.accept();
将接收的socket扔进线程池;
}
}
}
喜欢研究java的同学可以交个朋友,下面是本人的微信号:
- Socket接收器——Acceptor
- 广播接收器——BroadcastReceiver
- Android — 之广播接收器
- ACE之旅——Acceptor-Connector框架实例
- C# Socket TCP 协议接收器
- 广播接收器—Broadcast Receiver(一)
- 广播接收器—Broadcast Receiver(二)
- DataNode节点上数据块接收器——BlockReceiver
- AndroidAnnotations——Enhance broadcastreceivers优化广播接收器
- android学习笔记——BroadcastReceiver广播接收器初学习
- Android 四大组件——广播接收器 详解
- Android基础知识整合篇——广播接收器知识点
- Android——四大组件之一:BroadcastReceiver 广播接收器
- Acceptor-Connector
- muduo : Acceptor
- C# 实现的多线程异步Socket数据包接收器框架
- C# 实现的多线程异步Socket数据包接收器框架
- C# 实现的多线程异步Socket数据包接收器框架
- 自学大数据:用以生产环境的Hadoop版本比较
- Pascal's Triangle II
- STL unique_copy demo
- vsvim 命令
- 学习C++:实践者的方法(Beta1)
- Socket接收器——Acceptor
- 好久没来这里了,冒个泡
- 无法下载Android SDK及ADT解决方法
- HDU 1716 排列2
- iOS复习笔记11:协议和代理
- 算法导论 第13章 13-1 持久动态集合
- java super 深入理解
- 字符串-05. 字符串循环左移(20)
- 轻吟浅唱满目秋黄