Java 异步方法暂停:使用 CompletableFuture 实现
在给定的代码片段中,异步方法'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()'方法来等待异步方法的执行完成。这样,每当遍历到符合条件的索引时,就会暂停异步方法的执行。
原文地址: http://www.cveoy.top/t/topic/52r 著作权归作者所有。请勿转载和采集!