在给定的代码片段中,异步方法'asyncInstDataCapture.dataCapture(instid)'没有暂停的原因是没有使用任何机制来暂停异步方法的执行。

如果你想要暂停异步方法的执行,可以考虑使用'Future'或'CompletableFuture'来获取异步方法的执行结果,并使用'get()'方法来等待异步方法的完成。

以下是使用'CompletableFuture'来实现暂停异步方法执行的示例代码:

import java.util.concurrent.CompletableFuture;

// ...

for (int i = 0; i < instLists.size(); i++) {
    InstList instList = instLists.get(i);
    //获取产品ID
    String instid = instList.getInstid();
    //异步方法
    CompletableFuture<Void> future = CompletableFuture.runAsync(() -> asyncInstDataCapture.dataCapture(instid));
    if ((i + 1) % 10 == 0) {
        try {
            future.get(); // 等待异步方法执行完成
            Thread.sleep(2000);
        } catch (InterruptedException | ExecutionException e) {
            e.printStackTrace();
        }
    }
}

在上面的代码中,使用'CompletableFuture.runAsync()'方法来执行异步方法,并将返回的'CompletableFuture'对象存储在'future'变量中。然后,通过调用'future.get()'方法来等待异步方法的执行完成。这样,每当遍历到符合条件的索引时,就会暂停异步方法的执行。

Java 异步方法暂停:使用 CompletableFuture 实现

原文地址: http://www.cveoy.top/t/topic/52r 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录