Laravel  
laravel
文档
数据库
架构
入门
php技术
    
Laravelphp
laravel / php / java / vue / mysql / linux / python / javascript / html / css / c++ / c#

java completefuture

作者:嗜血之舞   发布日期:2025-04-05   浏览:61

import java.util.concurrent.CompletableFuture;
import java.util.concurrent.ExecutionException;

public class CompletableFutureExample {

    public static void main(String[] args) {
        // 创建一个CompletableFuture对象,它会在future中执行一个异步任务
        CompletableFuture<String> future = CompletableFuture.supplyAsync(() -> {
            // 模拟一个耗时的任务
            try {
                Thread.sleep(2000);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
            return "Hello, CompletableFuture!";
        });

        // 当上面的任务完成时,执行后续操作
        future.thenAccept(result -> {
            System.out.println("Result: " + result);
        });

        // 为了让主线程等待异步任务的完成,我们在这里调用join方法
        try {
            future.join();
        } catch (Exception e) {
            e.printStackTrace();
        }

        // 另一种方式是直接获取结果,这会阻塞当前线程直到结果可用
        try {
            System.out.println("Direct result: " + future.get());
        } catch (InterruptedException | ExecutionException e) {
            e.printStackTrace();
        }
    }
}

解释说明:

  1. 创建 CompletableFuture 对象

    • 使用 supplyAsync() 方法创建一个 CompletableFuture 对象。这个方法接受一个 Supplier 函数式接口作为参数,表示一个异步任务。
    • 在这个例子中,任务是模拟一个耗时的操作(通过 Thread.sleep()),并在完成后返回一个字符串 "Hello, CompletableFuture!"
  2. 处理任务完成后的操作

    • 使用 thenAccept() 方法来指定当异步任务完成后要执行的操作。这里我们只是简单地打印出任务的结果。
  3. 等待任务完成

    • join() 方法用于等待异步任务完成并返回结果。与 get() 不同,join() 不抛出异常,而是将异常封装在 CompletionException 中。
    • get() 方法也可以用来获取结果,但它会抛出 InterruptedExceptionExecutionException,因此需要捕获这些异常。
  4. 运行结果

    • 程序会先输出 Result: Hello, CompletableFuture!,然后输出 Direct result: Hello, CompletableFuture!

这段代码展示了如何使用 CompletableFuture 来执行异步任务,并在任务完成后处理结果。

上一篇:java爬取网页数据

下一篇:java finalize

大家都在看

java连接数据库的代码

ubuntu 卸载java

java sort用法

java collections.sort

java file类的方法

java 判断

java时间数据类型

java 时间加一天

java demo

java 截取

Laravel PHP 深圳智简公司。版权所有©2023-2043 LaravelPHP 粤ICP备2021048745号-3

Laravel 中文站