java中lambda和当前线程是什么关系?求解惑

狐妖小红娘 2018-11-13 06:41:01
小白一名,最近在看vert.x框架的时候,频繁用到lambda表达式。看一些帖子里说的捕获局部变量的问题,想请大神解释下lambda表达式和当前线程的关系,是在一个线程中吗?
lambda表达式是在另一个线程的。这句话该怎么理解,每一个lambda表达式都是运行在一个不同的线程上吗?
很困惑这个问题,求告知,谢谢了.
...全文
288 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
sotondolphin 2018-11-14
  • 打赏
  • 举报
回复
引用 4 楼 qq_26435169 的回复:
引用 1 楼 weixin_43614968 的回复:
你可以把lambda表达式想象成一个简洁的内部类实现。唯一在另一个线程里运行的lambda表达式是实现了 Runnable.run()或者 Callable.call(), 或者 ExecutorService.submit() 的表达式。
意思就是如果不主动实现开启新线程的接口,对于一般的接口实现。lambda表达式,代码还是在当前的主线程下执行行是吗?
是的,可以这么理解
狐妖小红娘 2018-11-14
  • 打赏
  • 举报
回复
引用 1 楼 weixin_43614968 的回复:
你可以把lambda表达式想象成一个简洁的内部类实现。唯一在另一个线程里运行的lambda表达式是实现了 Runnable.run()或者 Callable.call(), 或者 ExecutorService.submit() 的表达式。
意思就是如果不主动实现开启新线程的接口,对于一般的接口实现。lambda表达式,代码还是在当前的主线程下执行行是吗?
maradona1984 2018-11-13
  • 打赏
  • 举报
回复
引用 1 楼 weixin_43614968 的回复:
你可以把lambda表达式想象成一个简洁的内部类实现。唯一在另一个线程里运行的lambda表达式是实现了 Runnable.run()或者 Callable.call(), 或者 ExecutorService.submit() 的表达式。

forEach其实也是有fork/join的
lambda表达式是不是新线程,这个要看具体实现了
sotondolphin 2018-11-13
  • 打赏
  • 举报
回复
你可以把lambda表达式想象成一个简洁的内部类实现。唯一在另一个线程里运行的lambda表达式是实现了 Runnable.run()或者 Callable.call(), 或者 ExecutorService.submit() 的表达式。
sotondolphin 2018-11-13
  • 打赏
  • 举报
回复
引用 2 楼 maradona1984 的回复:
[quote=引用 1 楼 weixin_43614968 的回复:] 你可以把lambda表达式想象成一个简洁的内部类实现。唯一在另一个线程里运行的lambda表达式是实现了 Runnable.run()或者 Callable.call(), 或者 ExecutorService.submit() 的表达式。
forEach其实也是有fork/join的 lambda表达式是不是新线程,这个要看具体实现了[/quote] 你指的是parallel stream?

51,408

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧