Mar*_*lte 5 java lambda multithreading java-8
在Java8中,引入了lambda表达式.这个问题是关于何时执行并行lambda.
在Java8之前,Callable -classes是一次执行多个线程的一种方法.可以将Callables与Executor -classes一起使用来执行.假设我使用固定线程池,使用3作为活动处理任务的数量.我们假设我有8个任务.固定线程池将启动前三个任务,并在完成后,启动下一个任务,直到完成所有8个任务.
如果我将我的任务实现为Java8-lambdas,会发生什么?全部8个会立刻开始吗?还是顺序?还是以任何聪明的方式?
特别是,它们是否与调用者在同一个线程中运行(不使用Exeuctor)?就其本质而言,我猜lambdas可以很容易地在另一个线程中执行.
JB *_*zet 11
Runnable r = () -> System.out.println("hello");
Run Code Online (Sandbox Code Playgroud)
相当于
Runnable r = new Runnable() {
@Override
public void run() {
System.out.println("hello")
}
};
Run Code Online (Sandbox Code Playgroud)
并且它不会改变runnable的执行方式.如果将runnable提交给线程池,则线程池将执行它,无论您使用什么创建runnable:lambda,匿名类或顶级类.最后,你定义的是Runnable的一个实例,这是唯一重要的事情.
| 归档时间: |
|
| 查看次数: |
3483 次 |
| 最近记录: |