我正在做模拟项目,我有数百个 CPU 密集型作业运行 10 到 50 毫秒。Job 是一个 Runnable 对象,具有指定的运行时间,作业将使 CPU 保持忙碌。有 10 个线程在线程池中等待作业到达。我将请求速率设置为每秒 40 个请求,所有作业的运行时间设置为 10 毫秒。但结果太可怕了。所有作业至少运行 15 毫秒。没有运行 10 毫秒的作业。我用 15ms 的工作测试了实验,我得到了正确的结果。为什么 10 毫秒的作业至少运行 15 毫秒?(我使用的是 WINDOWS8)。
public class CpuBoundJob implements Runnable {
long runningTime
public CpuBoundJob(long runningTime) {
this.runningTime=runningTime;
}
@Override
public void run() {
long timeToWait = this.runningTime;
long startTime = System.currentTimeMillis();
while(startTime + timeToWait > System.currentTimeMillis());
}
}