LorryLu0416 2021-05-19 10:02 采纳率: 70%
浏览 175
已采纳

急!java8 CompletableFuture异步处理handle方法

有一个功能是上传文件的时候保存业务数据,保存失败删除上传的文件,修改图片可以删除之前上传的图片,考虑在后台使用异步处理,网上搜了一下可以用CompletableFuture去实现,但是现在使用CompletableFuture处理发现无法跳转到handle方法里面的断点导致无法删除已上传的文件,不知道是哪里逻辑写的不对,之前没有用过这种方式去处理异步调用,请各位大佬帮忙看看是哪里有问题?

!!!!!疑问点:

代码段:(保存业务数据逻辑只是保存数据没有返回值所以用的是runAsync没有用supplyAsync)

CompletableFuture<Void> saveFuture = CompletableFuture.runAsync(() -> {

	try {
		System.out.println("-----------业务数据保存开始Start-----------");
		//业务数据保存逻辑
		System.out.println("-----------业务数据保存结束End-----------");
		TimeUnit.SECONDS.sleep(1000);
	} catch (RuntimeException e) {
		e.printStackTrace();
	} catch (InterruptedException e) {
		e.printStackTrace();
	}

}, Executors.newSingleThreadExecutor())
.handle(new BiFunction<Void, Throwable, Void>() {
	@Override
	public Void apply(Void unused, Throwable throwable) {
		if (throwable != null) {
			System.out.println("-----------业务数据保存失败Fail-----------");
			System.out.println("-----------保存业务数据发生异常,删除上已传的文件-----------");
			//删除文件逻辑
			
		} else {
			//保存业务数据成功,删除旧文件
			System.out.println("-----------业务数据保存成功Success-----------");
			System.out.println("-----------保存业务数据成功,删除旧文件-----------");
			//删除文件逻辑
		}
		return null;
	}
});
  • 写回答

1条回答 默认 最新

  • 大太子二太子 2021-05-19 17:21
    关注

    TimeUnit.SECONDS.sleep(1000); 这个是睡了一千秒吧,把1000改成1试试

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 这个复选框什么作用?
  • ¥15 单通道放大电路的工作原理
  • ¥30 YOLO检测微调结果p为1
  • ¥20 求快手直播间榜单匿名采集ID用户名简单能学会的
  • ¥15 DS18B20内部ADC模数转换器
  • ¥15 做个有关计算的小程序
  • ¥15 MPI读取tif文件无法正常给各进程分配路径
  • ¥15 如何用MATLAB实现以下三个公式(有相互嵌套)
  • ¥30 关于#算法#的问题:运用EViews第九版本进行一系列计量经济学的时间数列数据回归分析预测问题 求各位帮我解答一下
  • ¥15 setInterval 页面闪烁,怎么解决