java - Foreach 循环进入下一次迭代而不等待当前迭代

标签 java asynchronous methods foreach

在 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 和 Future 以变得更加复杂。

关于java - Foreach 循环进入下一次迭代而不等待当前迭代,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19102576/

相关文章:

android - 屏幕方向期间 fragment 内的异步任务

java - 具有不同类型的变量参数?

java - toast 继承主题背景

javascript - 使用 es2017 的异步等待重构 promise 和 promise.all

javascript - 同步执行 Sequelize 查询

java - return 语句有问题

java - 在 Java 中是否可以在 main 方法中创建过程?

java - 主题 : No bean named 'com.colors.themes.service.ColorLocalService' is defined 中的 Liferay 访问数据库表

java - 如何使用具有多个参数的分隔符

java - 有什么方法可以使用 Ogre3D 和 C++ 使用 Java 窗口和输入吗?