我尝试同时读取文件并返回行数
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();
效果很好,但我发现如果我读取文件 1 和文件 2 之后的速度会更快...所以我不会使用 futureTash 获得任何性能提升
为什么?
最佳答案
自旋循环完全浪费了一个核心——这就是线程间信号的用途。如果您只有一张磁盘和两个文件,则根本不会有太大的加速,而且实际上它很可能是负的。如果您的文件位于不同的磁盘上(尤其是具有高延迟连接的网络磁盘),则会有很大的性能提升。
关于java - 同时读取2个文件,没有更多性能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11039110/