[英]Foreach loop go to next iteration without waitng for current iteration
在foreach循環中,我調用一個方法:
for (Iterable pl : ilist) {
myMethod();
}
myMethod()可能需要花費很長時間(例如幾分鍾或幾天)p1對象,但是執行時我想繼續進行下一個迭代(據我所知,這可以稱為異步調用)
使用foreach循環甚至可能嗎?
如果要調度這些任務以異步方式完成,則可以創建一個新的Runnable並將其交給ExecutorService以便在另一個線程上運行該操作。 現在,您需要知道如何處理此任務的結果。
// ExecutorService Thread Pool with 10 threads
ExecutorService executor = Executors.newFixedThreadPool(10);
public void iterate(Collection<?> collection) {
for (Object o : collection) {
executor.execute(createTask(o));
}
}
public Runnable createTask(final Object o) {
return new Runnable() {
public void run() {
// do task.
}
};
}
您將需要研究Callable and Future來變得更復雜。
您需要做的就是為循環的每次迭代生成一個新的Thread
。 我可能會這樣做。
for ( /* whatever */ ) {
new Thread() {
public void run() {
myMethod();
}
}.start();
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.