虚拟线程与平台线程用于对虚拟线程和平台线程之
Posted: Wed Jan 15, 2025 7:08 am
间的响应时间进行比较分析的测试设置非常简单。它只需要一种模拟 CPU 和内存负载的方法。我们的测试使用一个简单的类来模拟负载。任务是创建一个带有随机数的 ArrayList,这些随机数将被排序和打乱。
测试设置配备 32GB RAM 的 MacBook Pro M2 ProSpring Boot 中调用测试任务的简单 REST API
使用JMeter创建500个并发请求结果
图 3:500 个请求的测试结果
与平台线程相比,虚拟线程的稳定性和改进的响应时间在负载下清晰可见。
需要注意的是,通过对系统和代码的优化可以实现不同的结果。然而,这并 阿尔及利亚 whatsapp 数据 不是比较的主要目的。相反,目的是说明现有系统中单独使用虚拟线程所产生的吞吐量性能差异。更低的内存要求:虚拟线程使用的内存明显少于平台线程,从而显着提高性能。
更低的CPU使用率:与OS线程相比,JVM对虚拟线程的调度效率更高,并且导致的CPU使用率更少。
更快的上下文切换:与内核线程相比,虚拟线程可以实现更快的上下文切换,因为它们由 JVM 管理。
改进的吞吐量和延迟:使用虚拟线程通过允许单位时间处理更多请求来增加 Web 服务器的吞吐量,并通过减少处理时间来改进延迟。
如果我们发送更少的并发请求而不进行进一步的更改,那么平台线程的结果会更好。由于负载较低,操作系统和JVM可以更好地管理资源。
例如,如果有 300 个并发请求,则如下所示:
图 4:300 个请求的测试结果
可以预料,您的应用程序可能不会显示相同的结果,因为数据库使用或长时间运行的进程等各种因素都会发挥作用。即使使用同步也会影响结果。
结论
虚拟线程是 Java 平台的强大扩展,可简化并发应用程序的创建和管理并提高其性能。它们对于 IO 绑定和服务器端应用程序特别有用,但也为一般并发编程提供了好处。
您想了解更多关于 adesso 世界中令人兴奋的话题吗?那么请看一下我们之前发布的博客文章。
穆拉特·费兹奥格鲁 (Murat Fevzioglu) 图像
作者 穆拉特·费兹奥格鲁
Murat Fevzioglu 在 adesso 担任银行部门的软件架构师。他的主要关注点是复杂项目的整体分析、构思和实施。
测试设置配备 32GB RAM 的 MacBook Pro M2 ProSpring Boot 中调用测试任务的简单 REST API
使用JMeter创建500个并发请求结果
图 3:500 个请求的测试结果
与平台线程相比,虚拟线程的稳定性和改进的响应时间在负载下清晰可见。
需要注意的是,通过对系统和代码的优化可以实现不同的结果。然而,这并 阿尔及利亚 whatsapp 数据 不是比较的主要目的。相反,目的是说明现有系统中单独使用虚拟线程所产生的吞吐量性能差异。更低的内存要求:虚拟线程使用的内存明显少于平台线程,从而显着提高性能。
更低的CPU使用率:与OS线程相比,JVM对虚拟线程的调度效率更高,并且导致的CPU使用率更少。
更快的上下文切换:与内核线程相比,虚拟线程可以实现更快的上下文切换,因为它们由 JVM 管理。
改进的吞吐量和延迟:使用虚拟线程通过允许单位时间处理更多请求来增加 Web 服务器的吞吐量,并通过减少处理时间来改进延迟。
如果我们发送更少的并发请求而不进行进一步的更改,那么平台线程的结果会更好。由于负载较低,操作系统和JVM可以更好地管理资源。
例如,如果有 300 个并发请求,则如下所示:
图 4:300 个请求的测试结果
可以预料,您的应用程序可能不会显示相同的结果,因为数据库使用或长时间运行的进程等各种因素都会发挥作用。即使使用同步也会影响结果。
结论
虚拟线程是 Java 平台的强大扩展,可简化并发应用程序的创建和管理并提高其性能。它们对于 IO 绑定和服务器端应用程序特别有用,但也为一般并发编程提供了好处。
您想了解更多关于 adesso 世界中令人兴奋的话题吗?那么请看一下我们之前发布的博客文章。
穆拉特·费兹奥格鲁 (Murat Fevzioglu) 图像
作者 穆拉特·费兹奥格鲁
Murat Fevzioglu 在 adesso 担任银行部门的软件架构师。他的主要关注点是复杂项目的整体分析、构思和实施。