Pretty Code
In the code, the metaMap is used to store some configurations which can change from the manage system.
private static Map<String, String> metaMap = new ConcurrentHashMap<>();
@Override
@Transactional(readOnly = true)
public void initMetaMap(){
try{
Map<String, String> newMetaMap = new HashMap<>();
List<MataInfo> mataInfoList = mataInfoDao.findAllEffectMataInfoList();
List<String> deleteCode = new ArrayList<>();
if (Validator.isNotNullOrEmpty(mataInfoList)){
for (MataInfo info : mataInfoList){
newMetaMap.put(info.getCode(), info.getValue());
metaMap.put(info.getCode(), info.getValue());
}
for (Map.Entry<String, String> entry : metaMap.entrySet()){
String code = entry.getKey();
if (!newMetaMap.containsKey(code)){
deleteCode.add(code);
}
}
for (String dc : deleteCode){
metaMap.remove(dc);
}
}
}catch (Exception e){
LOGGER.error("initMetaMap error", e);
}
}
Bad Code
引入Future 是为了减少Hbase压力,单次处理200条,实际上以下代码没有任何作用,因为在future.get()调用时才会发生实际阻塞。