前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >tomcat 请求分析(1)处理线程的创建

tomcat 请求分析(1)处理线程的创建

作者头像
平凡的学生族
发布2019-05-25 09:22:27
5600
发布2019-05-25 09:22:27
举报
文章被收录于专栏:后端技术

关于JIoEndpoint的线程创建的名字

JIoJointPoint.startInternal创建AsyncTimeout线程:

代码语言:javascript
复制
Thread timeoutThread = new Thread(new AsyncTimeout(),
    getName() + "-AsyncTimeout");

当时比较疑惑getName里的name是在哪里设置的。一路跟踪才知道是在AbstractProtocol.init中调用的:

代码语言:javascript
复制
String endpointName = getName(); // ""http-bio-8080"",注意这里是有双引号的。
endpoint.setName(endpointName.substring(1, endpointName.length()-1)); // 把双引号去掉

startAcceptorThreads线程数

代码语言:javascript
复制
int count = getAcceptorThreadCount();

跟踪代码发现,在AbstractProtocol.init中调用

代码语言:javascript
复制
endpoint.init();

然后调用AbstractEndpoint.init

代码语言:javascript
复制
public final void init() throws Exception {
        testServerCipherSuitesOrderSupport();
        if (bindOnInit) {
            bind();
...

进而调用JIoEndpoint的bind:

代码语言:javascript
复制
@Override
    public void bind() throws Exception {

        // Initialize thread count defaults for acceptor
        if (acceptorThreadCount == 0) {
            acceptorThreadCount = 1;
        }
...

在此设置为了1。

总结

原文方法

代码语言:javascript
复制
@Override
public void startInternal() throws Exception {
    if (!running) {
        ...
        startAcceptorThreads();

        // Start async timeout thread
        Thread timeoutThread = new Thread(new AsyncTimeout(),
                getName() + "-AsyncTimeout");
        timeoutThread.setPriority(threadPriority);
        timeoutThread.setDaemon(true);
        timeoutThread.start();
    }
}

startAcceptorThreads();创建了Acceptor守护进程, 另外几行则创建了AsyncTimeout进程。 总而言之: JIoEndpoint.start内会创建Acceptor和AsyncTimeout进程

学习方法总结

要多用idea的全文搜索"ctrl+shift+f"和类全文搜索"ctrl+shift+n"

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019.04.12 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 关于JIoEndpoint的线程创建的名字
  • startAcceptorThreads线程数
  • 总结
  • 学习方法总结
相关产品与服务
Elasticsearch Service
腾讯云 Elasticsearch Service(ES)是云端全托管海量数据检索分析服务,拥有高性能自研内核,集成X-Pack。ES 支持通过自治索引、存算分离、集群巡检等特性轻松管理集群,也支持免运维、自动弹性、按需使用的 Serverless 模式。使用 ES 您可以高效构建信息检索、日志分析、运维监控等服务,它独特的向量检索还可助您构建基于语义、图像的AI深度应用。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档