据我所知,对于CPU绑定的任务,您通常需要每个核心1个线程,否则您可以开始为每个核心添加更多线程。但是每个线程的任务(或者它们是同一个)呢?
我正在试图找出如何将一个大问题组合成Runnable
的最佳数量,以便我可以将它们提交给Executor
。我的理解是,您可以配置Executor
将使用的线程数(因此它不一定是1比1)。
所以我的问题是:让我说我发现对于我给定的应用程序,我确定每个核心5个线程是最佳比率; 但如何确定首先要创建的最佳任务数(Runnables
)?
答案 0 :(得分:0)
你把它变成一个旋钮,你可以改变,直到你开心。可能适用于您的工作站的内容可能不适用于部署服务器。这取决于。用一只手抓住旋钮,在另一只手上抓一块秒表,然后对它进行基准测试,直到你对结果感到满意为止。
答案 1 :(得分:-1)
你知道Amdahl的法律吗?
使用此公式,您可以确定多线程应用程序将获得的潜在加速与单线程相比。
总结一下,你有以下公式:
加速 = 1 /(1 - p)+(p / n)
,其中
p 是平行分数, 1 - p 是连续分数和 n 是处理器数量。
如果你有一个由60%并发代码和40%顺序代码组成的应用程序,你的并行分数为0.6,顺序分数为0.4。
希望这有助于你