1 背景
实际的java web开发过程中,在业务处理的过程中,需要调用多次外部的服务(可能是http服务,也可能是rpc服务),而这写调用是可以并行的。然而,目前网上能找到如何编写这类代码的资料极少,对于初学者来说想要实现起来会有一定的难度。因此,本篇文章将给出一个简单易用的并行处理代码,希望对你有帮助。
2 实现的demo
2.1 工具类 ConcurrencyDataTagEnum.java
@Getter
@AllArgsConstructor
public enum ConcurrencyDataTagEnum {
/**
* 商品id与商品的映射标记
*/
PRODUCT_ID_PRODUCT_MAP_TAG("ProductIdProductMap", "商品id与商品的映射标记"),
/**
* 商品id与品牌的映射标记
*/
PRODUCT_ID_BRAND_MAP_TAG("ProductIdBrandMap", "商品id与品牌的映射标记"),
/**
* 商品id与类别list的映射标记
*/
PRODUCT_ID_CATEGORY_LIST_MAP_TAG("ProductIdCategoryListMap", "品id与类别list的映射标记"),
/**
* 商品id与区域id的映射标记
*/
PRODUCT_ID_AREA_ZIP_AREA_MAP_TAG("ProductIdAreaZipAreaMap", "商品id与区域id的映射标记"),
/**
* 门店商品id与活动列表的映射标记
*/
EFFECTIVE_STORE_PRODUCT_ID_ACTIVITY_ESO_MAP_TAG("EffectiveStoreProductIdActivityESOMap", "门店商品id与活动列表的映射标记");
private String key;
private String value;
}
2.2 ConcurrencyDataDTO.java
@Data
public class ConcurrencyDataDTO<T> {
/**
* 数据的标签,便于后期在一堆并发数据中取得想要的数据
*/
private ConcurrencyDataTagEnum concurrencyDataTagEnum;
private T data;
public static ConcurrencyDataDTO create(ConcurrencyDataTagEnum concurrencyDataTagEnum, Object data) {
ConcurrencyDataDTO concurren