現在、次のことを行うコードがあります。
private final static ExecutorService pool = Executors.newCachedThreadPool();
public void foo(){
FutureTask<MyObject> first_task = createFutureTask();
FutureTask<MyObject> second_task = createFutureTask();
...
pool.execute(first_task);
pool.execute(second_task);
....
first_task.get();
second_task.get();
...
System.out.println(time taken);
}
私が抱えている問題は、将来のタスクのそれぞれが計算を行うときにかかる時間を出力することです。たとえば、コンソールに表示されます
first_task : 20000ms
second_task : 18000ms
...
ただし、合計時間 ( System.out.println(time taken)
) は、将来のタスクにかかる最長時間よりもはるかに長いため、この例に沿って、メソッド do は約 1 分かかります (first_task の 20 秒と比較して)。
これらの将来のタスクは並行して実行されているという印象を受けましたが、タイミングからすると、次から次へと実行されているように見えます。この API を正しく使用していますか?