同时读取2个文件,没有更多的性能

rob*_*del 0 java multithreading futuretask

我试着同时读取文件并返回行数

ExecutorService executor = Executors.newFixedThreadPool(2);
FutureTask<Integer> futureOne = new FutureTask<Integer>(new Calcul1());
FutureTask<Integer> futureTwo = new FutureTask<Integer>(new Calcul2());
executor.execute(futureOne);
executor.execute(futureTwo);
while (!(futureOne.isDone() && futureTwo.isDone())) {

}

System.out.println(futureOne.get() + futureTwo.get());
executor.shutdown();
Run Code Online (Sandbox Code Playgroud)

这工作得很好但我发现如果我读取文件1和文件2后更快...所以我没有得到任何性能提升futureTash

为什么?

Mar*_*mes 5

自旋循环完全浪费了一个核心 - 这就是线程间信号的用途.如果你只有一个带有两个文件的磁盘,那么根本没有太大的加速,并且在行动中它可能是负面的.如果您有不同磁盘上的文件(特别是具有高延迟连接的网络磁盘),则会有很大的性能提升.