【发布时间】:2020-07-14 11:03:22
【问题描述】:
我有一个类,它实现了Runnable 接口,并且是一个一旦启动就会无限期运行的任务(一个长时间运行的线程)。
public class LongRunningTask implements Runnable {
@Override
public void run() {
//stuff happening here
}
}
一个简单的ExecutorService/ThreadPoolExecutor创建:
final ExecutorService executorService = Executors.newFixedThreadPool(8);
如果LongRunningTask 实际启动/执行,我可以观察到它的实际结果,因此,我注意到了这一点:
如果我传递给
executorService.execute(() -> new LongRunningTask());执行,根本不会执行,也不会有结果。如果我将它传递给
executorService.execute(new LongRunningTask());执行,它将按原样执行并且会有结果。
使用() ->的lambda语法有什么区别?
【问题讨论】:
-
你认为
() -> new LongRunningTask()是做什么的?尝试使用非 lambda 语法(作为匿名类)重写它。
标签: java concurrency executorservice java.util.concurrent