# Consumer(适用场景:日志、保存、通知;我拿到了结果,做点事就行)
1. 定义uploadService接口
void analysisV3(String yid, String sourceurl, Consumer<Analysis> callback);
2. 实现uploadService实现类
@Async// 异步
public void analysisV3(String yid, String sourceurl, Consumer<Analysis> callback) {
logger.info("===开始解析==");
Analysis a = getAnalysis(yid, "");// 解析
try {
Thread.sleep(1000 * 3);// 延时
} catch (InterruptedException e) {
throw new RuntimeException(e);
}
callback.accept(a);// 执行传入的Consumer代码
}
3. 调用
uploadService.analysisV3("uuid", "d:/xxxxxxxx", analysis -> {
logger.info("===1===id:{},yid:{},sourceurl:{},resulturl:{}", analysis.getId(), analysis.getYid(), analysis.getSourceurl(), analysis.getResulturl());
});
# Function(适用场景:转换、计算、映射数据;我拿到了结果,处理后返回新结果)
1. 定义uploadService接口
void analysisV4(String yid, Function<String, Analysis> callback);
2. 实现uploadService实现类
@Async// 异步
public void analysisV4(String yid, Function<String, Analysis> callback) {
Analysis analysis = callback.apply("str1");// 执行传入的Function代码(格式:Function<入参, 返回参>)
logger.info("===1===id:{},yid:{},sourceurl:{},resulturl:{}", analysis.getId(), analysis.getYid(),
analysis.getSourceurl(), analysis.getResulturl());
}
3. 调用
uploadService.analysisV4("uuid", str1 -> {
logger.info("===1===str1:{}", str1);
logger.info("===开始解析==");
Analysis a = getAnalysis(yid, "");// 解析
try {
Thread.sleep(1000 * 3);// 延时
} catch (InterruptedException e) {
throw new RuntimeException(e);
}
return a;
});