首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么Java使用线程抽象而不是协同例程?

为什么Java使用线程抽象而不是协同例程?
EN

Stack Overflow用户
提问于 2013-10-23 02:51:20
回答 1查看 377关注 0票数 3

在Lua中遇到了协同例程的概念后,我觉得它们似乎是一种更好的并发软件编程模型,我想知道为什么Java中没有使用它?

协同例程似乎让开发人员编写在多个函数之间跳转的代码,每次前进几个步骤,提供并发执行的错觉,就像Java中CPU在多个线程之间进行时间片一样,但是协同例程允许开发人员决定何时跳出一个函数并开始执行另一个函数。这允许开发人员决定步骤应该有多细粒度,即并发程度,以及何时应该发生上下文切换,这可以防止延迟关键时代价高昂的上下文切换。

EN

回答 1

Stack Overflow用户

发布于 2013-10-23 02:57:25

协程功能强大,但不会取代完全合法的多线程应用程序,因为协程在单个线程上运行。因此,当CPU密集型任务需要时,它们不会使用多核。我认为它们代表了一种互补的范式,而不是一种竞争的范式。函数式编程正在Java语言中取得进展,就像它在.Net平台上所做的那样。协程最终将遵循suite。我建议您查看Java路线图以获取更多信息。有关协程和其他概念的更详细的答案,请参阅Processes, threads, green threads, protothreads, fibers, coroutines: what's the difference?。另请参阅Throughput differences when using coroutines vs threading,它讨论了如何使用协程而不是多线程来实现生产者和消费者问题。

票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19525976

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档