gpt4 book ai didi

java - Java 8 中的 lambda 表达式是否执行多线程?

转载 作者:搜寻专家 更新时间:2023-10-31 08:26:19 25 4
gpt4 key购买 nike

在 Java8 中,lambda expressions被介绍。这个问题是关于何时执行并行 lambda 的。

Java8 之前,Callable -类是一次执行多个线程的一种方式。 Callables 可以与 Executor 一起使用- 要执行的类。假设我使用的是 Fixed Thread Pool ,使用 3 作为 Activity 处理任务的数量。假设我有 8 个任务。固定线程池会先启动三个任务,一个完成后启动下一个任务,直到8个任务全部完成。

如果我将我的任务实现为 Java8-lambdas,会发生什么?会同时启动所有 8 个吗?还是依次?或者以任何巧妙的方式?

特别是,它们是否与调用者在同一个线程中运行(不使用执行器)?就其性质而言,我猜 lambda 可以很容易地在另一个线程中执行。

最佳答案

Runnable r = () -> System.out.println("hello");

相当于

Runnable r = new Runnable() {
@Override
public void run() {
System.out.println("hello")
}
};

而且它不会改变可运行对象的执行方式。如果您将可运行对象提交给线程池,那么线程池将执行它,无论您使用什么来创建可运行对象:lambda、匿名类或顶级类。最后,您定义的是 Runnable 的一个实例,这是唯一重要的事情。

关于java - Java 8 中的 lambda 表达式是否执行多线程?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23495415/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com