接口请求 与 线程的关系是什么.? 5C

在原先的理解中,每一次接口请求都会发起一个新的线程..但是发现不是这么回事儿..

在测试中..判断当前线程的名称是否为空,

为空时将当前请求的地址赋值给线程名称..不为空的话进断点查看.

结果是: 第一次请求顺利通过..第二次请求命中断点.. 查看线程的名称发现是第一次请求的URL地址..
说明第二次请求所使用的线程和第一次请求所命名的那个线程..两个请求使用同一线程..

有没有大神能够帮忙解释这种现象.. 来帮助理解里边的逻辑..

7个回答

请求是做的一个事情,线程是一个工作者

什么语言,代码贴出来,代码逻辑的目的是啥,你是想指定为啥两次接口请求使用同一个线程?
如果你使用了线程池,那同一个线程处理两次请求很正常,如果没有使用线程池,那说明你两次请求就是同一个线程。比如js中setTimeout发起的请求,多次
请求都是同一个线程

.NET 语言..
代码示例见下方..

 if (System.Threading.Thread.CurrentThread.Name == null)
 {
       System.Threading.Thread.CurrentThread.Name = context.HttpContext.Request.Host.Value + context.HttpContext.Request.Path.Value;
}
 else
{
    //断点在此  第二次请求时命中..
}

并没有使用线程池.. 就是普通的请求Api..

这个情况就是线程没有被销毁,而是重复使用了。
这个是正常的,如果缺省情况线程频繁地销毁和创建,那么性能肯定会降低不少。
如果用asp.net还需要手工编码来使用线程池,不太符合现在的发展趋势吧。

建议去把System.Web.HttpRuntime类用ILSpy或者其他反编译工具反编译之后,研究一下HttpRuntime类的ProcessRequest()方法具体的代码实现,看看里面具体每次拦截到一个HttpRequese之后是怎样去处理的

Servlet 默认是单例模式,在web 容器中只创建一个实例,所以多个线程同时访问servlet的时候,Servlet是线程不安全的。 你的就是这种情况。
你应该用的是Serlvet请求做的。

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐