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