在多线程(Executor 框架)中,x() 方法中所有时间打印的总和与 doPerform 打印的总时间不匹配。这种差异随着线程池中线程数量的增加而不断增长(达到 20 秒)。有人可以弄清楚为什么吗?有什么方法可以减少从 x 方法返回所需的时间?
我已经用以下方法对其进行了测试:
a)500 次提交给 executor(poolsize =100)
b)500 次提交给 executor(poolsize =300)
c)300 次提交给 executor(poolsize =100)
public void x() {
long startTime = System.currentTimeMillis();
for (long l = 0; l <= 10000000; l++) {
if (l % 1000000 == 0) {
System.out.println("Thread id: "
+ Thread.currentThread().getId() + "\t"
+ (System.currentTimeMillis() - startTime));
startTime = System.currentTimeMillis();
}
}
}
public void doPerform() {
long startTime = System.currentTimeMillis();
x();
System.out.println("Thread id: " + Thread.currentThread().getId()
+ "\t" + (System.currentTimeMillis() - startTime));
}