JVM 上的协程,真香

2018-12-05 16:25:13 +08:00
 sagaxu
尝试把一个 API 从 Future 重构成了 coroutine,代码行数减少很多,代码逻辑也更清晰易懂了。同步的代码写起来流畅多了,又少了一个用 go 的理由。
10412 次点击
所在节点    程序员
46 条回复
HsingChih
2018-12-05 16:34:11 +08:00
你是用的什么框架,Quasar 还是 kilim ?
BBCCBB
2018-12-05 16:36:48 +08:00
发图不留种, xxxxx
sagaxu
2018-12-05 16:37:40 +08:00
@HsingChih Kotlin + Vertx,前几日发布的 vertx 3.6,为所有异步方法自动合成了 suspend function,不用再写 await 了
WispZhan
2018-12-05 16:39:59 +08:00
然而 go 的协程资源成本低很多
lihongjie0209
2018-12-05 16:40:07 +08:00
有时候一个类库解决的问题非要用另外一种语言...
luosuosile
2018-12-05 16:41:18 +08:00
现在都不写 Java 的吗?后端有开始用 Kotlin 的吗。
PDX
2018-12-05 16:47:52 +08:00
@sagaxu 3.6 真的优化好多
keepeye
2018-12-05 17:01:16 +08:00
coroutine 是单线程吗? goroutine 可以利用多核吗?小白不懂求教
qiyuey
2018-12-05 17:07:50 +08:00
@lihongjie0209 Kotlin:不仅仅是协程
qiyuey
2018-12-05 17:12:13 +08:00
@keepeye 都可以选
sagaxu
2018-12-05 17:12:31 +08:00
@WispZhan go 是 stackful 协程,kotlin 是 stackless 协程,一个 kotlin 协程内存占用还不到 1KB,go 每个协程要 2KB。
@lihongjie0209 一年前换了 Kotlin,协程是今天才上的。并非因为一个库换的语言。
@keepeye 线程数可以自己决定,vertx 部署了几个 instance 就有几个线程。
@qiyuey Kotlin 值得拥有。
GuuJiang
2018-12-05 17:22:00 +08:00
借地广告下自己撸的 coroutine 轮子,现在还处于玩具阶段,但是功能是完备的
https://github.com/GuuJiang/Jacob
lhx2008
2018-12-05 17:30:21 +08:00
没 kotlin,直接用 webflux 的响应式编程也不错
reus
2018-12-05 17:32:12 +08:00
换言之,go 用这种同步风格的东西已经六七年了,而且一直都很稳定,不用你改代码
vert.x 遗留代码就会比较多吧,我猜。
qiyuey
2018-12-05 18:51:40 +08:00
@lhx2008 webflux 的问题在于链式调用过于复杂,可读性太低
WispZhan
2018-12-05 20:15:11 +08:00
@sagaxu 受教了,看来之前对 kotlin 和协程了解还是不深。
hujianxin
2018-12-05 20:49:44 +08:00
@keepeye goroutine 不是简单的协程,可以高效利用多核
pythonee
2018-12-05 21:05:43 +08:00
有代码实例吗
taowen
2018-12-05 21:27:24 +08:00
@GuuJiang 应该不是完整实现吧?看代码量并不大啊。
lueffy
2018-12-05 21:31:39 +08:00
马克

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

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

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

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

© 2021 V2EX