CompletableFuture.supplyAsync(...)
.thenCompose(...)
.thenApply(...)
.thenRun(...)
.thenxxx(...)
.whenComplete((v, ex) -> ...);
String doWork1(){}
Integer doWork2(String work1Result){}
String finalWork(String work1Result, Integer work2Result){}
CompletableFuture.supplyAsync(doWork1)
.thenCompose(doWork2)
.thenRun(someWork) //someWork 中并不需要 work1 和 work2 的结果
.thenCompose(finalWork)
但是为了能够将 work1 和 work2 的结果传递到 finalWork,就必须要在 someWork 中强行加上入参,再原样放到返回中
解决:所有方法一律入参 tuple,返回 tuple,方法中只取需要的值,其他值放在 tuple 中往后流转。但是方法显得不够模块,很冗余,而且对后面维护代码的人很不友好
感觉最近对函数式编程、函子这些比较入迷,有大佬能推荐一下 java8 中使用 CompletableFuture 的正确姿势吗,或者关于函数式编程比较好的教程
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.