【发布时间】:2016-07-23 00:05:13
【问题描述】:
我有一个方法(可以被不同的线程同时调用)创建一个异步任务并返回一个CompletableFuture。我想通过将其与 whenComplete(...) 链接来测量运行任务所需的时间,如下所示:
public CompletableFuture<Result> createTask(...) {
CompletableFuture<Result> result = ...;
final long startTime = System.currentTimeMillis();
result.whenComplete((res, err) -> {
System.out.println(System.currentTimeMillis() - startTime);
}
}
我传入的 lambda 将异步执行,我编写的方法也将是多线程的。这个 lambda 能否打印出准确的时间?当 lambda 被不同的线程异步执行时,Java 如何处理变量范围?
【问题讨论】:
-
请重新阅读您的问题并进行编辑。措辞不是很清楚。
标签: java multithreading asynchronous lambda