gpt4 book ai didi

java - Java 中可用的协程库

转载 作者:IT老高 更新时间:2023-10-28 20:44:22 26 4
gpt4 key购买 nike

我想在 Java 中做一些事情,如果使用并发例程编写会更清晰,但对于这些事情来说,全线程是严重的过度杀伤力。答案当然是使用 coroutines ,但标准 Java 库中似乎没有任何协程支持,并且快速谷歌上它会在这里或那里带来诱人的提示,但没有什么实质性的。

这是我目前发现的:

  • JSIM有一个协程类,但它看起来很重量级,并且似乎与 点处的线程。这样做的目的是降低全线程的复杂性,而不是增加 它。此外,我不确定该类是否可以从库中提取并独立使用。
  • Xalan有一个协程集类,它可以做类似协程的东西,但是如果这个又是可疑的 可以从整个库中有意义地提取。它看起来也被实现为 严格控制形式的线程池,而不是实际的协程。
  • 有一个 Google Code project这看起来像我所追求的,但如果有的话,它看起来更多 比使用线程更重要。我基本上对需要软件的东西感到紧张 在运行时动态更改 JVM 字节码以完成其工作。这看起来有点矫枉过正,就像 这会导致比协程解决的问题更多的问题。此外,它看起来不像 实现整个协程概念。通过我的浏览,它提供了一个 yield 功能,它只是返回 给调用者。适当的协程允许 yield 直接将控制权转移到任何已知的协程。 基本上这个库,重量级和可怕的,只为您提供对迭代器的支持,而不是 完全通用的协程。
  • 大名鼎鼎的Coroutine for Java失败,因为它是特定于平台的(显然使用 JNI) 解决方案。

这就是我找到的所有内容。

我知道达芬奇机器中对协程的本地 JVM 支持,我也知道 JNI continuations trick这样做。然而,这些对我来说并不是很好的解决方案,因为我不一定能够控制我的代码将在哪个 VM 或平台上运行。 (事实上​​,任何字节码操作系统都会遇到类似的问题——如果可能的话,最好是纯 Java。例如,运行时字节码操作会限制我在 Android 上使用它。)

那么有没有人有任何指示?这甚至可能吗?如果没有,在 Java 7 中是否有可能?


编辑添加:

只是为了确保避免混淆,这是一个与 my other one 相关的问题。 ,但不一样。这个人正在寻找一个现有的实现,以避免不必要地重新发明轮子。另一个问题是如果这个问题被证明无法回答,人们将如何在 Java 中实现协程。目的是在不同的线程上保留不同的问题。


进一步编辑添加:

answer is selected .然而,一些评论是有序的。指向的库不是协程库,因此从技术上讲它不能回答我的问题。话虽如此,但它比上面链接的 Google 代码项目有两个优势:

  1. 两种解决方案都使用字节码操作,但所选库允许静态字节码操作,使其可用于 Android 和其他不兼容的 JVM 堆栈。
  2. Google 代码项目不执行完整的协程。虽然 answer 的库甚至根本不做协程,但它做了一些更重要的事情:它为滚动我自己的全功能协程提供了一个很好的基础工具。

最佳答案

Javaflow是一个延续实现,它可能会让你这样做。但它使用字节码操作。

不管怎样,感觉就像你在尝试用普通的 C 来做 OOP。这是可行的,但并不意味着你应该这样做。

关于java - Java 中可用的协程库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2846428/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com