小编Jos*_*eph的帖子

Java 范围内的异步 lambdas 如何到局部变量

我有一个方法(可以由不同的线程同时调用)创建一个异步任务并返回一个CompletableFuture. 我想通过将任务与 whenComplete(...) 链接来测量运行任务所需的时间,如下所示:

public CompletableFuture<Result> createTask(...) {
    CompletableFuture<Result> result = ...;
    final long startTime = System.currentTimeMillis();
    result.whenComplete((res, err) -> {
        System.out.println(System.currentTimeMillis() - startTime);
    }
}
Run Code Online (Sandbox Code Playgroud)

我传入的 lambda 将异步执行,我编写的方法也将是多线程的。这个 lambda 能够打印出准确的时间吗?当 lambda 被不同的线程异步执行时,Java 如何处理变量范围?

java lambda multithreading asynchronous

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

标签 统计

asynchronous ×1

java ×1

lambda ×1

multithreading ×1