gpt4 book ai didi

java - 理解tomcat/spring boot多线程

转载 作者:行者123 更新时间:2023-11-28 22:15:49 25 4
gpt4 key购买 nike

我在 spring-boot 的基础上创建了一个简单的 web 应用程序。它收到请求,执行一些 block 操作(比如写入控制台编号从 1 到 10_000)并返回简单的响应。
当我开始使用 JVisual VM 对其进行测试时,我注意到线程以一种奇怪的方式工作。
一开始,低负载时,它们不是同时工作,而是轮流工作:

load test 1

如果我尝试高负载应用程序而不是 Tomcat 创建新线程(据我所知这没问题)并且在一段时间后线程同时工作:

load test 2


我用过 Netling应用程序来测试应用程序。它只是对本地主机的简单请求,没什么特别的。
你能解释一下为什么它以这种方式工作吗?或者提供一些带有描述的链接。
提前致谢!

最佳答案

我已经了解了问题的根源。
在我看到的 JVisualVM 上,所有线程都被彼此阻塞,但我不知道为什么。现在很清楚了——我已经使用 system.out.println() 作为 block 操作,但是线程不能同时使用它,控制台被锁定。
我已将控制台输出更改为文件输出(使用线程名称作为文件名以防止锁定)并再次启动应用程序。现在它按预期工作。

愚蠢的错误,但我希望它对某人有用:)

enter image description here

关于java - 理解tomcat/spring boot多线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54216932/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com