2
我现在有代码,执行以下操作:怎么办FutureTasks和CachedThreadPool工作
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)
)远远大于任何未来的任务而采取的时间最长,所以在这个例子线的方法也需时约1分钟(与first_task的20s相比)。
我的印象是,这些未来的任务并行运行,但从时间上来看,好像它们正在一个接一个地运行。我是否正确使用此API?
如果你有多个核心 – basszero 2010-03-05 17:08:18