gpt4 book ai didi

java - 如何决定在java中创建合适的线程数?

转载 作者:搜寻专家 更新时间:2023-11-01 02:30:12 24 4
gpt4 key购买 nike

我有一个 java 应用程序可以创建与远程主机的 SSL 套接字。我想使用线程来加速这个过程。

我想要不影响程序性能的最大可能利用率。我如何决定使用合适的线程数?运行以下行后:Runtime.getRuntime().availableProcessors(); 我得到了 4。我的处理器是 Intel core i7,具有 8 GB RAM。

最佳答案

如果您有 4 个内核,那么理论上您应该在任何给定时间恰好有四个工作线程运行以实现最大优化。不幸的是,理论上发生的事情在实践中永远不会发生。您可能有工作线程,无论出于何种原因,它们都有大量的停机时间。也许他们正在上网获取更多数据,或者从磁盘读取数据,其中大部分只是等待而不是使用 CPU。

根据您等待的时间长短,您需要增加等待时间。增加线程数量的代价是您将有更多的上下文切换和资源竞争。好处是您将有另一个线程准备工作,以防其他线程之一决定它必须中断某些事情。

最好的办法是将其设置为某个值(让我们从 4 开始),然后逐步提高。使用每个设置分析您的代码,并查看您的基准测试是上升还是下降。您应该很快就会看到一个模式和一个盈亏平衡点。

当涉及到优化时,您可以根据自己的需要对最快的方法进行理论化,但您不会比实际运行和计时代码更能真正回答这个问题。

关于java - 如何决定在java中创建合适的线程数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11403920/

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