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
为什么?
自旋循环完全浪费了一个核心 - 这就是线程间信号的用途.如果你只有一个带有两个文件的磁盘,那么根本没有太大的加速,并且在行动中它可能是负面的.如果您有不同磁盘上的文件(特别是具有高延迟连接的网络磁盘),则会有很大的性能提升.
| 归档时间: |
|
| 查看次数: |
123 次 |
| 最近记录: |