java中并发编程CompletableFuture和supplyAsync的用法

在Java中,并发编程可以使用CompletableFuture类来实现异步操作和并行任务。其中,supplyAsyncCompletableFuture类的一个静态方法,用于执行一个有返回值的异步任务。

supplyAsync方法的语法如下:

public static CompletableFuture supplyAsync(Supplier supplier)

它接受一个Supplier函数式接口作为参数,该函数不接受任何参数并返回一个结果对象。

以下是CompletableFuture.supplyAsync方法的用法示例:

import java.util.concurrent.CompletableFuture;
import java.util.concurrent.TimeUnit;

public class CompletableFutureExample {
    public static void main(String[] args) {
        // 异步执行一个有返回值的任务
        CompletableFuture future = CompletableFuture.supplyAsync(() -> {
            try {
                // 模拟耗时操作
                TimeUnit.SECONDS.sleep(2);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
            return "Hello, CompletableFuture!";
        });

        // 当任务完成时,处理返回结果
        future.thenAccept(result -> System.out.println("Result: " + result));

        // 主线程不阻塞继续执行其他操作
        System.out.println("Do something in the main thread...");

        // 等待异步任务完成
        future.join();
    }
}

在上述示例中,supplyAsync方法接受一个SupplierLambda表达式,里面包含了异步执行的任务逻辑。在这个例子中,我们通过TimeUnit.SECONDS.sleep(2)模拟了一个耗时的操作,然后返回了一个字符串结果。

通过thenAccept方法,我们可以在任务完成后处理返回结果。在示例中,我们简单地打印出结果。

注意,在主线程中我们可以继续执行其他操作而不阻塞等待异步任务的完成。最后,我们使用join方法来等待异步任务的完成。

这样使用CompletableFuture.supplyAsync方法可以方便地进行异步任务的执行,并在任务完成后进行相应的处理。

你可能感兴趣的:(java,java,python,开发语言)