【问题标题】:Is there a good dataflow concurrent library in javajava中有没有好的数据流并发库
【发布时间】:2012-10-27 10:41:48
【问题描述】:

我目前正在研究 Clojure 和 Groovy GPars 中的并发数据流模型。是否有任何用纯 Java 编写的库可以让我受益?

我知道我可以导入或委托给 Clojure 或 Java,但如果可能的话,我想要一个不错的专用 Java API。

【问题讨论】:

  • 继续,写一个,没你想的那么难... :-)
  • 我知道,但我已经有太多的重新发明,需要外部支持:)
  • 在 java 中不知道这样的系统,但在 javascript 中有 noflo 我认为这是一个概念证明库。在我看来,不需要用数据流组件编写每一行代码。我将编写自己的 js lib,我将仅使用数据流代码岛来帮助异步编码,并像往常一样使用同步代码编写其他所有内容......这个概念很好,但我不认为它是黄金锤子一切...
  • github.com/jpaulm/javafbp 有一个库,但我不确定这是否是你要找的,因为你使用数据流术语,而不是数据流编程......我想我准备好了睡觉,我无法理解我读到的内容。 :D

标签: java clojure dataflow


【解决方案1】:

Akka的数据流模块。它的底层 future/promises 抽象有一个专用的 Java API,但数据流模块被设计为从 Scala 中使用。但根据您的具体需求,Akka 的 futures 和 promise 就足够了。它们的设计、实施和记录都非常好。甚至有一本书专门介绍 Akka 的未来。

【讨论】:

  • 我不久前尝试了 akka(1.3 版)的 actor 和 stm(多元宇宙)的东西,但发现 actor 库对我来说太 scala 了。我可以怀疑这与数据流模块类似?
  • 也许我错了,但 afaik akka 是一个基于参与者而不是基于数据流的解决方案。顺便提一句。这两个术语都有共同点,因此它可以用于基于actor的约束的基于数据流的编程,但我不确定这种解决方案是否适合所有人。例如,我不喜欢一个资源 - 一个演员的概念。 (我从未使用过akka。)
  • 一篇比较actors和数据流编程的有趣文章:drdobbs.com/database/dataflow-programming-handling-huge-data/…
  • 演员和数据流模型确实是完全不同的。但是,如果我没记错的话,我特意说的是 Akka 的数据流模块,它现在已经停产了。
【解决方案2】:

df4j 字面意思是“Java 的数据流”。我认为它是一个很好的库,但请注意,我是作者 :)。

【讨论】:

  • 抱歉,我看了一眼。这不只是一个演员库而不是数据流库吗?它似乎依赖于参与者接收消息而不是读取绑定的数据流变量?
  • @Niels 数据流模型有很多变体,没有一个库可以实现所有这些。 df4j 绑定了数据流变量(CallbackFuture 类),但参与者不允许读取它们,只能写入(绑定)。只有线程可以读取数据流变量。这是因为读取未绑定的变量会阻塞底层线程,actor 在线程池上执行,很快池中的所有线程都可能被阻塞。如果要通过大量actor(超过线程数)使用数据流变量,则必须使用字节码重写,如malhar.net/sriram/kilim
猜你喜欢
  • 1970-01-01
  • 2014-10-14
  • 1970-01-01
  • 2011-12-06
  • 1970-01-01
  • 2023-03-30
  • 2020-01-12
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多