栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

Spring RestController 6并行执行?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Spring RestController 6并行执行?

在日志中,我可以看到即时信息:

PRE !!!!!!!!!!!!!

大约15瑞典克朗后。下5个:PRE !!!!!!!!!!!!! PRE !!!!!!!!!!!!! PRE !!!!!!!!!!!!! PRE
!!!!!!!!!!!!! PRE !!!!!!!!!!!!!

我认为这是浏览器的问题/局限性。

当请求到达servlet容器(例如Tomcat)时,将从池中检索一个线程来为其提供服务。这意味着每个请求都有其自己的线程,并且将在整个生命周期内使用该线程(即:您发送了响应)。

这就是为什么我认为这是浏览器强加的限制。

看一看:

@RestController@RequestMapping(path = "test")public class TestController {    private final Logger log = LoggerFactory.getLogger(this.getClass());    @GetMapping    public ResponseEntity<Object> handleTest() throws InterruptedException {        log.info("Thread {} started", Thread.currentThread().toString());        Thread.sleep(5000);        log.info("Thread {} finished", Thread.currentThread().toString());        return ResponseEntity.ok("EXECUTED!!");    }}

第一次测试

浏览器中5个打开的标签页

这将立即记录

2019-10-17 09:36:37.514  INFO 10324 --- [nio-8083-exec-1] b.c.d.m.controller.TestController        : Thread Thread[http-nio-8083-exec-1,5,main] started

现在,在所有5个请求(5个选项卡)收到响应之后(看看时间- 一个接一个地执行 ):

2019-10-17 09:36:37.514  INFO 10324 --- [nio-8083-exec-1] b.c.d.m.controller.TestController        : Thread Thread[http-nio-8083-exec-1,5,main] started2019-10-17 09:36:42.515  INFO 10324 --- [nio-8083-exec-1] b.c.d.m.controller.TestController        : Thread Thread[http-nio-8083-exec-1,5,main] finished2019-10-17 09:36:42.551  INFO 10324 --- [nio-8083-exec-2] b.c.d.m.controller.TestController        : Thread Thread[http-nio-8083-exec-2,5,main] started2019-10-17 09:36:47.551  INFO 10324 --- [nio-8083-exec-2] b.c.d.m.controller.TestController        : Thread Thread[http-nio-8083-exec-2,5,main] finished2019-10-17 09:36:47.559  INFO 10324 --- [nio-8083-exec-4] b.c.d.m.controller.TestController        : Thread Thread[http-nio-8083-exec-4,5,main] started2019-10-17 09:36:52.560  INFO 10324 --- [nio-8083-exec-4] b.c.d.m.controller.TestController        : Thread Thread[http-nio-8083-exec-4,5,main] finished2019-10-17 09:36:52.571  INFO 10324 --- [nio-8083-exec-5] b.c.d.m.controller.TestController        : Thread Thread[http-nio-8083-exec-5,5,main] started2019-10-17 09:36:57.572  INFO 10324 --- [nio-8083-exec-5] b.c.d.m.controller.TestController        : Thread Thread[http-nio-8083-exec-5,5,main] finished2019-10-17 09:36:57.582  INFO 10324 --- [nio-8083-exec-6] b.c.d.m.controller.TestController        : Thread Thread[http-nio-8083-exec-6,5,main] started2019-10-17 09:37:02.584  INFO 10324 --- [nio-8083-exec-6] b.c.d.m.controller.TestController        : Thread Thread[http-nio-8083-exec-6,5,main] finished

第二次测试

在浏览器中刷新页面

继续,打开浏览器,输入URL,按

ENTER
并开始按
CTRL
+
R

我按了CTRL + R四次

因此将有1 + 4个请求(第一个(带有

ENTER
)和随后的4个请求(带有
CTRL
+
R
))

我可以看到所有5个线程开始并行运行:

2019-10-17 09:46:30.149  INFO 10324 --- [nio-8083-exec-9] b.c.d.m.controller.TestController        : Thread Thread[http-nio-8083-exec-9,5,main] started2019-10-17 09:46:30.471  INFO 10324 --- [io-8083-exec-28] b.c.d.m.controller.TestController        : Thread Thread[http-nio-8083-exec-28,5,main] started2019-10-17 09:46:30.713  INFO 10324 --- [io-8083-exec-29] b.c.d.m.controller.TestController        : Thread Thread[http-nio-8083-exec-29,5,main] started2019-10-17 09:46:30.981  INFO 10324 --- [io-8083-exec-10] b.c.d.m.controller.TestController        : Thread Thread[http-nio-8083-exec-10,5,main] started2019-10-17 09:46:31.244  INFO 10324 --- [nio-8083-exec-1] b.c.d.m.controller.TestController        : Thread Thread[http-nio-8083-exec-1,5,main] started

第三次测试

使用两个不同的客户端

继续,尝试使用Postman(或任何其他http客户端)和浏览器。

使用浏览器发送请求,

ALT
+
TAB
使用Postman发送请求。

我可以看到两个线程开始并行运行(第一个请求来自浏览器,第二个请求是使用Postman发出的):

2019-10-17 09:50:31.663  INFO 10324 --- [nio-8083-exec-5] b.c.d.m.controller.TestController        : Thread Thread[http-nio-8083-exec-5,5,main] started2019-10-17 09:50:32.587  INFO 10324 --- [nio-8083-exec-9] b.c.d.m.controller.TestController        : Thread Thread[http-nio-8083-exec-9,5,main] started

通过查看这些测试,我确信这是浏览器强加的限制。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/647693.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号