gpt4 book ai didi

Java 线程池吞吐量

转载 作者:行者123 更新时间:2023-11-29 04:53:07 26 4
gpt4 key购买 nike

我在 Java 客户端服务器应用程序中观察到一个非常奇怪的问题。我以每秒 80 个请求向服务器发送以下 Runnable 对象。线程池保持池大小等于请求率,即池中大约有 80 个线程。我的笔记本电脑是 intel Core i5-3230M双核(Windows 显示 4 处理器)。奇怪的是 Throughput(jos completed per second) 也是 80。我无法理解这一点。 4 个处理器和 80 个线程如何在一秒钟内完成 100 毫秒的 80 个作业?即:

Processors=4
Request rate=80
Thread pool size=80
Each job service time=100milliseconds.
Throughput=80 How?

我期望吞吐量=40,因为每个处理器应该在 1 秒内大约完成 10 个作业,所以 4 个处理器应该提供吞吐量=40,但它是 80?笔记本电脑规范 link

Also, the cores can handle up to four simultaneous threads, which improves the performance and resource-utilization of the CPU.

这是否意味着 2 个内核可以同时运行 8 个线程?

public class CpuBoundJob  implements Runnable {

public void run() {

long startTime = System.nanoTime();
while ((System.nanoTime() - startTime) < (100)*1000000L) {}

}
}

最佳答案

您编写了运行固定时间的任务,而不是固定的工作量。这意味着无论您拥有多少 CPU,它们都应始终以固定速率完成。你可以让他们睡 100 毫秒。

How 4 processors and 80 threads are completing 80 jobs of 100 milliseconds in one second ?

您的计算机运行的线程比您一直拥有的进程要多得多。操作系统使用调度来停止和开始运行线程(比你看到的要快)来给人一种它们都在同时运行的错觉,但它们不是也不能(如果你想一想就永远不可能)

Also, the cores can handle up to four simultaneous threads, which improves the performance and resource-utilization of the CPU.

这意味着它有两个具有超线程的内核,允许处理器运行多达四个线程而无需上下文切换(如上所述)

Does this means 8 threads can run at the same time b 2 cores?

提到的 i5 有 2 个内核,它支持 4 个线程。

关于Java 线程池吞吐量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34707701/

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