Java虚拟线程会杀死响应式编程?


投入时间和精力学习领先的反应式框架(如 Webflux、RxJava 等)是否是个好主意?

鉴于虚拟线程(Project Loom)在几次迭代后将在 JVM 中成为 GA。
甚至 Spring 也引入了虚拟线程友好的 RestClient。

哪种是有效的方法:

  • 1) 通读《Java 并发实践》 + 学习虚拟线程
  • 2) 通读《Java 并发实践》 + 学习 Webflux + 学习虚拟线程
  • 3) 只学习虚拟线程???

网友讨论:
1、Brian Goetz 曾经发表过一篇文章,他声称虚拟线程会杀死响应式编程,但我认为他的文章被误解了。我认为他正在谈论反应式编程的异步方面。
流仍然非常有用,您实际上可以将像 RxJava 这样强大的库与虚拟线程结合起来,方法是将执行器替换为虚拟线程,并返回您想要的值,这样就不必再​​担心阻塞线程toBlocking()了。

像 RxJava 这样的库允许您使用一系列值来做一些非常强大的事情,这些事情在没有流甚至使用 Stream API 的情况下是不容易实现的,比如缓冲、重试、分组、限制等。

如果流因为纤程或协程而变得无用,那么像 Kotlin 的 Flows 或 Scala 的 fs2 或 ZIO Streams 这样的库就不会存在。

2、现在有了虚拟线程,反应式编程将变得比以前更加成为一种小众技能。
仅在您描述的情况下才真正需要使用接收流。对于需要吞吐量的情况,虚拟线程将承担大部分繁重的工作。

3、不能跳过java并发,所以从那开始。然后找到第一份工作 - 该项目将决定你接下来应该学习什么。