"lambda 表达(匿名内部类) 会在另一个线程中执行"

2021-01-14 10:18:23 +08:00
 noble4cc

怎么理解这句话?看到网上资料很多都这么说,当然可能是互相抄的

lambda 表达式是独立线程执行?还是说有的场景下 lambda 是不在定义的线程调用执行?

3841 次点击
所在节点    Java
24 条回复
fpure
2021-01-14 16:43:27 +08:00
这说法明显是断章取义然后越传越偏的典型
namelosw
2021-01-14 17:11:28 +08:00
只是某些 lambda 会新建线程, 绝大部分是不会的. 不在新线程运行的 lambda 改变量跟 JS 闭包一样, 就是稀松平常的东西, 没有什么问题.

不过这个也体现了一个语言设计问题, 闭包捕获变量有时候是危险的. 比如 Akka 这个库因为在 JVM 上, 所以只能靠自觉不要捕获 mutable 的东西, 不然就会把线程池卡死.

比较好的设计是 Erlang 那种, spawn 进程的时候 lambda 捕获的东西全是 immutable 的, 这样数据可以任意复制, 放在哪个进程都是一样的, 这样就可以任意捕获而不会有任何副作用.
faceRollingKB
2021-01-14 17:32:15 +08:00
lambda 不就是一种定义匿名方法的语法么,怎么就跟线程扯上关系了?
mitsuizzz
2021-01-28 15:37:41 +08:00
@lululau 很清晰 学到了

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/744789

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX