Java CompletableFuture 流式编程最佳实践?

2020-09-22 11:04:24 +08:00
 nthin0

重试

任务顺序

一条流式语句中目前没解决的问题

whenComplete

需要多个参数参与任务流转的问题

String doWork1(){}

Integer doWork2(String work1Result){}

String finalWork(String work1Result, Integer work2Result){}

CompletableFuture.supplyAsync(doWork1)
  	.thenCompose(doWork2)
    .thenRun(someWork) //someWork 中并不需要 work1 和 work2 的结果
    .thenCompose(finalWork)
4048 次点击
所在节点    Java
18 条回复
yamasa
2020-09-22 11:58:58 +08:00
1.想学 FP,java 是很不适合的语言。要真正理解思想应该考虑学下 Lisp 的一些方言。反正国内这环境你也指望不了这些语言吃饭,就当是修炼内功了。
2.实在要在 java 里面搞,上 reactor 啊,比 cf 那一套残次品真的完成度高太多了,只要业务是真的 async 的,可以做到一把梭哈完。
hdfg159
2020-09-22 12:50:08 +08:00
emmm,用 RxJava 去了
zoharSoul
2020-09-22 13:36:29 +08:00
CompletableFuture 就是个残废.
建议一步到位直接 rxjava 或者 kotlin 协程
nthin0
2020-09-22 13:43:12 +08:00
@yamasa 感谢🙏,只是想提升下内功多接触一些函数式的思想,日常 crud 一把梭能用上的地方不多,准备去学习下 rxjava 了。
nthin0
2020-09-22 13:44:15 +08:00
@zoharSoul 深有同感,现有的 cf 实现局限性太太太多了,准备看看 rxjava,多谢🙏
Skhizein
2020-09-22 13:55:20 +08:00
听上去好像存在银弹似的
jelipo
2020-09-22 13:58:23 +08:00
写业务就算了,心智负担比较高,你能写出来同事也看不懂
上 kotlin 协程
wysnylc
2020-09-22 14:10:50 +08:00
没有银弹
rulework
2020-09-22 14:14:47 +08:00
建议学下 scala
AllanAG
2020-09-22 14:29:06 +08:00
RxJava 在安卓上使用较多,后端的话的有 Spring 的 Reactor,网络相关的 reactor-netty
ychost
2020-09-22 15:08:43 +08:00
撸的最多的还是 Stream,RxJava 撸多了发现 Java 不适合
rim99
2020-09-22 15:10:38 +08:00
CompletableFuture/CompletableStage 感觉适合作为最终输出的类型使用,中间过程用 RxJava 之类的 Reactive Stream 类库更合适
qiyuey
2020-09-22 15:18:59 +08:00
换 Kotlin 协程吧,这个写起来太麻烦了
nthin0
2020-09-22 15:19:46 +08:00
@jelipo 考虑其他同事的学习成本,公司项目上 kotlin 可能性不大,只能先熟悉函数式编程练一下内功
nthin0
2020-09-22 15:20:07 +08:00
@AllanAG 👌👌 多谢
nthin0
2020-09-22 15:23:14 +08:00
@qiyuey 公司项目上 kotlin 可能性不大,准备拿个人项目练练手
BBCCBB
2020-12-24 16:06:18 +08:00
最近我也在找 completablefuture 重试.. 发现 failsafe 这个库可以实现.不自带的确很难受.
BBCCBB
2020-12-24 16:06:34 +08:00
楼主已经发现了哈哈

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/709315

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX