首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Lambda表达式在多核系统中的优势是什么?

Lambda表达式在多核系统中的优势是什么?
EN

Stack Overflow用户
提问于 2013-06-07 10:19:44
回答 3查看 12.5K关注 0票数 10

Lambda表达式的Java教程如下:

本节讨论Project中包含的特性,该项目旨在通过在Java语言中添加闭包和相关特性来支持多核环境中的编程。

我的问题是,根据多核系统和并发/并行编程,Lambda表达式有哪些具体优势?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-06-07 10:24:14

要实现并行性非常简单,例如,如果您有一个集合,并且实现了一个lambda,那么:

代码语言:javascript
运行
复制
collection.map { // my lambda }

然后集合本身就可以并行化该操作,而不必自己执行线程处理等操作。并行性在集合map()实现中处理。

在一个纯功能(即没有副作用)系统中,您可以对每个lambda这样做。对于非纯功能环境,您必须选择适用于此的lambda (因为您的lambda可能不能安全地并行操作)。例如,在Scala中,为了实现上面的内容,您必须显式地接受集合上的并行视图

票数 8
EN

Stack Overflow用户

发布于 2013-06-07 17:01:02

一些参考材料:

  • 你可以在为什么将lambda表达式添加到Java中上读莫里斯·纳夫塔林的答案。
  • 或者你可以在他的文章“闭包用于Java”中阅读Mark的答案。
  • Reinhold还在他的博客中写了一个闭包Q&A,它似乎解决了你的一些问题。
  • JavaWorld中甚至有一篇关于理解关闭辩论的有趣文章。
票数 7
EN

Stack Overflow用户

发布于 2016-05-10 04:21:05

对于Java 8、lambda函数和开发人员的意图,我想问一问:什么是新的,为什么它比传统的接口/方法函数方法更好?为什么它比(假设) forEach(IApply)更好:

IApply是接口

代码语言:javascript
运行
复制
public interface IApply {
    void exec(KEY key, VALUE value);
}

它是如何阻碍并行性的?至少可以在静态类中重用、继承(扩展) IApply的实现。

最后一个参数很重要,因为我看到了几十个初级类错误的例子,这些例子忽略了lambda代码访问外层类的这个错误,这可能是类在明确引用后留在内存中的一个原因已经为null。

从这个角度来看,引用类的静态成员是非常重要的(类似于C#“委托”的情况),而且从一方面来说,lambda是超级封装,来自另一个不能重用的,同时违反了OOD文化的基本原则:免费访问主成员。从编程文化的角度看--倒转到上个世纪70年代.

函数式编程?-I看到了,但是为什么要混合是Java的OOP现象。OOD有一个很棒的模式,叫做数据-行为解耦,它优雅地提供了同样的可能性?这个论点--就像在Java脚本...nu中一样,真的!因此,给出在Java中嵌入Java脚本和用Java脚本编写系统块的工具。所以我仍然没有看到真正的好处,因为在广告浪潮中。

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

https://stackoverflow.com/questions/16981796

复制
相关文章

相似问题

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