美文网首页
tomcat 请求分析(1)处理线程的创建

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

作者: 不存在的里皮 | 来源:发表于2019-04-12 02:07 被阅读0次

关于JIoEndpoint的线程创建的名字

JIoJointPoint.startInternal创建AsyncTimeout线程:

Thread timeoutThread = new Thread(new AsyncTimeout(),
    getName() + "-AsyncTimeout");

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

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

startAcceptorThreads线程数

int count = getAcceptorThreadCount();

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

endpoint.init();

然后调用AbstractEndpoint.init

public final void init() throws Exception {
        testServerCipherSuitesOrderSupport();
        if (bindOnInit) {
            bind();
...

进而调用JIoEndpoint的bind:

@Override
    public void bind() throws Exception {

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

在此设置为了1。

总结

原文方法

@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"

相关文章

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

    关于JIoEndpoint的线程创建的名字 JIoJointPoint.startInternal创建AsyncT...

  • 手写Tomcat

    需求分析 根据Tomcat的基本功能分析,基本需求包括: 监听端口,接受外部请求 多线程并发处理多个请求 解析HT...

  • 一个请求在tomcat和springmvc中的执行流程

    请求进入tomcat后,tomcat的Connector会为请求分配一个线程来处理它。 tomcat会把http请...

  • 17. Tomcat调优

    Tomcat网络处理线程模型 Tomcat7及以前(BIO+同步Servlet)1.png 一个请求,一个工作线程...

  • 4.1、异步servlet

    同步:接收到一个请求后,tomcat 容器提供一个线程,线程调用servlet。异步:请求异步处理后tomcat ...

  • Tomcat 请求线程的解析

    查询tomcat当前并发连接数 关于tomcat 请求线程的问题 Tomcat 请求线程数

  • IO 多路复用

    IO 多路复用 如何提升并发能力? 多线程模型,创建新的线程处理请求 多进程模型,创建新的进程处理请求 IO 多路...

  • tomcat的3个线程栈dump样本分析

    "朝花夕拾、不留遗憾。念念不忘,必有回响。" 通过通读tomcat请求任务处理、tomcat线程池、TaskQue...

  • MySQL查询执行过程

    MYSQL请求处理路径: MySQL请求处理流程: #1.为用户创建、分配处理线程。 #2.登录验证 #3.资源初...

  • Tomcat 源码分析 一次完整请求 (基于8.0.5)

    1. Tomcat 一次完整请求猜想 在进行分析之前, 我们先自己猜想一下, Tomcat 处理一个请求一共完成哪...

网友评论

      本文标题:tomcat 请求分析(1)处理线程的创建

      本文链接:https://www.haomeiwen.com/subject/hrfziqtx.html