|
|
1
12
Javaflow 是一个连续的实现,它可能会让您这样做。但它使用字节码操作。 不管怎样,这感觉就像你在用普通的C做OOP。这是可行的,但并不意味着你应该这样做。 |
|
|
2
10
|
|
|
3
9
你觉得马蒂亚斯·曼写的延续图书馆怎么样?我从创建者的网站上复制了利弊,以便于讨论。重要的是要查看源代码中的测试,以便在网站上看到一个以上的示例。 http://www.matthiasmann.de/content/view/24/26/ 让我们从你得到的开始:
有了这些伟大的特点,你可能会问缺点。当然也有一些缺点:
通过将需要使用同步的代码放入自己的方法中,可以解决同步问题。 |
|
|
4
5
你的要求似乎是:
我有一种讨厌的感觉,这些要求排除了在Java中实现协同程序的所有明智的策略。 |
|
|
5
3
如果你使用Java,那么在2017年底有2个选项可用: 这两种方法都是基于通用的javaflow——它们在字节码级别重新编写代码以使事情正常工作。 我保持 协同程序 --它的优点是速度快,支持所有主要的构建系统,并且支持协程的序列化/版本控制。缺点是API与Commons Javaflow有一些偏差。 vsilaev维护 流苏 --我没有使用它,所以我不能在上面说,但它是维护的,从示例来看,它的API与Commons Javaflow的API更接近。 Kotlin和Scala(以及其他基于JVM的语言)中也有语言特性,允许您使用协程。但是,在切换语言之前,你应该意识到,Kotlin、Scala或Jum语言现在的任何一个都不是,也永远不会是Java。当JVM的下一个版本发布时,不管它在后台做什么都可能无法工作。 在Oracle中维护JDK的人员有使用这些第三方JVM语言进行市场调查的记录。如果将高级特性添加到第三方JVM语言中,并且它很流行,它们会将其合并到Java中。这就是协同训练现在正在发生的事情。有一个名为OpenJDK的项目 Project Loom 其目的是向Java语言添加协同程序。 对于项目织布机来说,现在还为时过早。如果你仔细看了一下这个建议,那就一团糟了。我相信随着时间的推移,它会稳定下来,但我们最终会得到的可能与我们许多人所期待的完全不同。 简单地说,您的选择是使用一个字节码检测工具包,或者切换语言。项目织机仍处于早期阶段,有可能永远不会添加到Java中。 |
|
|
6
2
play框架现在提供了javaflow的延续。因为游戏在其他领域提供了如此多的便利,你可能想从它开始。 http://www.playframework.org/documentation/1.2RC2/releasenotes-1.2#Continuations |
|
|
7
1
有一个新的可用于Java的协同框架框架库。它是用纯Java实现的,因此不需要单独运行JNI或Java代理。它是开源的,可以从github下载: https://github.com/esoco/coroutines 该框架的介绍可在以下介质中找到: |
|
|
8
0
Quasar 器具 Go-like coroutines 以及使用continuations的其他功能。 更多关于类星体的细节、基准和链接 another answer . |
|
9
-2
我查了你链接的相关问题,在我的生活中,我真的不明白线程有什么坏处。在Java线程中,从来都不是本地线程,它们只是孤立的执行单元,依赖于上下文,如果它们是有益的,则可以运行为它们自己的本机线程,即将大的执行块拆分为自己的线程是聪明的,而仅由于少数开销而保持小的执行块更为明智。 也就是说,Java/JDK本身并没有为高级程序员提供的协同程序。JDK7 无论什么时候出来 )会有所谓的 jsr166y 这是DougLea的fork/join框架。有关技术信息, check this PDF 李先生本人。实际上,fork/join添加了另一个( 有用! 在Java内部线程模型之上的粒度级别,这将帮助您实现您想要的。 |
|
|
Danny · 如何实现能够返回生成器的模板驱动的嵌套for循环? 2 年前 |
|
|
Arya_ · 如何为java android实现协同调度程序? 3 年前 |
|
|
bjy0212 · 协同程序运行时Unity游戏停止 4 年前 |
|
|
Robin · 使用Kotlin协同例程时房间dao类出错 8 年前 |