在 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/