【问题标题】:Difference between Java Concurrency, Akka and RxJava?Java并发,Akka和RxJava之间的区别?
【发布时间】:2015-02-16 00:23:58
【问题描述】:

今天我发现,对于 java 中的并发,我们有像 Akka 这样的良好框架,而且我还发现,有一个像 RxJava 这样的反应式编程框架,用于在应用程序中执行 multithreading。但我还是一头雾水!为什么两者都比Java Concurrency 框架好?

现在响应式编程是成熟的话题,大多数语言都支持Functional Reactive Programing,比如Netflix,为不止一种语言提供关于Reactive programming的API。 Rxjava 是用于javascala 等的api 之一。根据RxJava,他们在内部使用actors 来维护multithreadingAkka 也使用Actors 进行multithreading 编程.

那么,AkkaReactive Programming 方法有什么区别,为什么它们比 Java Concurrency 好?

【问题讨论】:

  • 不清楚;最终,选择这个或那个解决方案取决于您的需求。
  • 好的,但是哪种方法好,反应式编程,akka 或 java 并发?因为他们都提供multithreading
  • 没有通用的“好方法”;只做你熟悉和/或想做的事。就个人而言,我只是使用 JDK 提供的东西,因为它足以满足我的需求,仅此而已。
  • 好吧,我不知道我是否是一个“优秀的开发人员”,但我不会推荐任何一个,因为我不使用它们,也不需要它们。就并发而言,您想(购买和)阅读 Brian Goetz 的“Java Concurrency In Practice”。
  • 是的,我有这本书,这本书真的很棒,我不是说你不是good developer。对不起,如果我喜欢你。但进化是发展的一部分。我仍然想知道,为什么我们更喜欢它们。

标签: java concurrency akka rx-java


【解决方案1】:

根据 Mathias Doenitz 的说法,此时 RxJava 没有与 Akkas Reactive Streams 实现不同的背压。但 RxJava 似乎正在努力增加背压。

两个框架都将能够通过反应式流式传输 spi 进行交互。 所以你将能够做非常非常相似的事情。根据 Mathias 的说法,不同之处在于 Akka 实现是基于内部的 actor,而不是多线程。因此性能会更高。

我的这些信息来源是 a talk,这是 Mathias 上周在荷兰 Scala 用户组提供的。

编辑:我支持 RxJava 中的背压支持。如果您关注 Eriks 链接,您可以阅读背压的含义。

【讨论】:

【解决方案2】:

基于actors的Akka Streams提供actors和流之间的互操作,例如:

  • 从 actor 读取并将其传递给流和
  • 从流中读取并将其传递给演员

【讨论】:

    猜你喜欢
    • 2018-05-01
    • 2012-12-17
    • 1970-01-01
    • 1970-01-01
    • 2015-10-24
    • 2023-01-18
    • 1970-01-01
    • 2012-01-21
    • 2016-06-29
    相关资源
    最近更新 更多