一个http请求就是一个线程吗?Java的服务是每收到一个请求就新开一个线程来处理吗?


 

问题一:一个http请求就是一个线程吗?

答案:是,一个http请求,就是一个线程。

 

 

问题二:Java的服务是每收到一个请求就新开一个线程来处理吗?

答案:不一定,下面的图片解释为什么答案是不一定。图片摘自:tomcat连接数线程数java的服务是每收到一个请求就新开一个线程来处理吗?tomcat呢?

 

 

关于“单线程”与“多线程”可以这样形象地比喻:

tomcat,是银行;一个线程,就是一个来银行办理业务的用户,每个线程带着一个http请求。线程是共享cpu的。

那么多线程和单线程相比,能提升处理速度吗?(备注:一个CPU可以包含一个或两个内核,一个内核又可以有一个或两个线程)

好比,一个窗口,三个人来办理业务。单线程:一个办完,下一个再开始办。多线程:大家轮流着办,一会给A办,一会儿给B办。

就一个窗口而言,单线程,多线程,耗时差别并不大,并没有明显提升效率。

那么为什么还说多线程比单线程效率高呢?

 

总结:

1. 一个http请求是一个线程吗?

可以这样来说:一个请求,就对应了一个线程。

2. Java的服务每收到一个请求就新开一个线程来处理吗?

受到tomcat启动的“最大线程数”和“接受排队请求个数”的制约。当已经开启的线程数目小于“最大线程数”时,自然是来一个请求,就会开启一个线程来处理这个请求。但是一旦超过了最大线程数,而又小于允许排队个数,就可以在那排着队,等待着前面的请求执行完了,空出来线程再分配给这些处于等待状态的请求。而如果处于等待的http请求已经等于了允许等待个数,便会直接拒绝此次请求。

评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

麦田里的POLO桔

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值