Foreach循环进入下一次迭代,无需waitng进行当前迭代

Sou*_*net 0 java methods foreach asynchronous

在foreach循环中我调用一个方法:

for (Iterable pl : ilist) {

myMethod();

}
Run Code Online (Sandbox Code Playgroud)

myMethod()可能需要很长时间才能当前(比如几分钟或几天)p1对象,但是执行时我想继续进行下一次迭代.(据我所知,这可以称为异步调用)

甚至可以使用foreach循环吗?

cod*_*lhu 5

如果要将这些任务安排为异步完成,可以创建一个新的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.
        }
    };
}
Run Code Online (Sandbox Code Playgroud)

你会想看看Callable和Future来变得更复杂.