小编For*_*ity的帖子

ExecutorService & Lambdas - .execute(() -> ...) 和 .execute() 之间的区别

我有一个类,它实现了Runnable接口,并且是一个一旦启动就会无限期运行的任务(一个长时间运行的线程)。

public class LongRunningTask implements Runnable {

    @Override
    public void run() {
        //stuff happening here
    }

}
Run Code Online (Sandbox Code Playgroud)

一个简单的ExecutorService/ThreadPoolExecutor创作:

final ExecutorService executorService = Executors.newFixedThreadPool(8);
Run Code Online (Sandbox Code Playgroud)

如果LongRunningTask实际启动/执行,我能够观察到它的实际结果,因此,我注意到了这一点:

  • 如果我传递给它执行executorService.execute(() -> new LongRunningTask());,它根本不会执行,也不会有结果。

  • 如果我通过它来执行executorService.execute(new LongRunningTask());它,它将按照它应该的方式执行并且会有结果。

使用 的 lambda 语法有() ->什么区别?

java concurrency executorservice java.util.concurrent

1
推荐指数
1
解决办法
1757
查看次数