我想了解java中的ExecutorService。當我使用1個線程或4個線程時,沒有太大的性能差異。我有一個四核CPU,我沒有任何其他進程在運行。Java中ExecutorService的性能
ExecutorService exService = Executors.newFixedThreadPool(4);
exService.execute(new Test().new RunnableThread());
exService.awaitTermination(25, TimeUnit.SECONDS);
class RunnableThread implements Runnable {
@Override
public void run() {
StopWatch stopWatch = new StopWatch();
stopWatch.start();
long cnt = 0;
for (cnt = 0; cnt < 999999999; cnt++) {
try {
for (long j = 0; j < 20; j++){
x += j;
}
} catch (Exception e) {
e.printStackTrace();
}
}
stopWatch.stop();
System.out.println(stopWatch.getTime());
}
}
如果我的理解是正確的,當我說newFixedThreadPool(4)正確時,我的任務應該有接近4倍的性能改進?
如果你提交任務列表,你會看到它,然後它會並行執行它,一個任務不會被分配到多個線程 – 2014-09-26 00:36:24
在這個例子中,你只是一個線程,但即使如此,這樣的瑣碎代碼即使使用多線程,您也不會看到任何加速。 – 2014-09-26 00:37:07