1.定义抽象类继承Supplier接口
private static abstract class QuerySupplier implements Supplier {
private Long index;//用于循环增加数量
public QuerySupplier(Long index) {
this.index = index;
}
@Override
public abstract C get();
public Long getIndex() {
return index;
}
}
2.定义泛型执行CompletableFuture.supplyAsync工厂方法
private CompletableFuture executeQuery(Supplier supplier) {
return CompletableFuture.supplyAsync(supplier,dataCheckExecutor)//Supplier接口,线程池
}
3.while循环中查询
CompletableFuture> erpFuture = executeQuery(new QuerySupplier>(index){
@Override
public List get() {
return //根据index执行查询方法
}
});
CompletableFuture> ibpFuture = executeQuery(new QuerySupplier>(index){
@Override
public List get() {
return //根据index执行查询方法
}
});
CompletableFuture.allOf(erpFuture,ibpFuture).join();//阻塞直到所有异步都执行完毕
List erpData = erpFuture.get();
List ibpData = ibpFuture.get();
补充 :手动在代码中控制事务提交回滚(基于Spring事务管理器)
@Autowired
private PlatformTransactionManager txManager;
DefaultTransactionDefinition def = new DefaultTransactionDefinition();
deg.setIsolationLevel(TransactionDefinition.ISOLATION_REPEATABLE_READ);//重复读
TransactionStatus status = txManager.getTrabsaction(def);
txManager.commit(status);//提交事务
txManager.rollback(status);//回滚事务