簡體   English   中英

Foreach循環無需等待當前迭代即可轉到下一個迭代

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM