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

java异步执行代码

作者:寂寞带点伤   发布日期:2026-06-25   浏览:81

// Java 异步执行代码示例

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

public class AsyncExample {

    public static void main(String[] args) {
        // 创建一个CompletableFuture来异步执行任务
        CompletableFuture<String> future = CompletableFuture.supplyAsync(() -> {
            // 模拟耗时操作,例如网络请求或计算
            try {
                Thread.sleep(2000); // 模拟延迟
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
            return "异步任务完成";
        });

        // 主线程继续执行其他任务
        System.out.println("主线程在等待异步任务完成...");

        // 等待异步任务完成并获取结果
        try {
            String result = future.get(); // 阻塞等待结果
            System.out.println(result);
        } catch (InterruptedException | ExecutionException e) {
            e.printStackTrace();
        }

        // 也可以使用 thenAccept 来处理异步任务的结果,而不需要阻塞主线程
        future.thenAccept(result -> System.out.println("异步任务返回: " + result));

        // 让主线程稍作等待,以便观察异步任务的输出
        try {
            Thread.sleep(3000);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
    }
}

解释说明:

  1. CompletableFuture:这是Java 8引入的一个类,用于表示一个异步计算的结果。它提供了丰富的API来处理异步任务。
  2. supplyAsync:这是一个静态方法,用于创建一个CompletableFuture,并异步执行给定的任务(即传入的Lambda表达式)。这个方法不会阻塞当前线程。
  3. future.get():阻塞当前线程,直到异步任务完成,并返回结果。如果不想阻塞主线程,可以使用thenAccept等非阻塞方法来处理结果。
  4. thenAccept:这是一个非阻塞的方法,当异步任务完成后,它会自动调用传入的Lambda表达式来处理结果。

通过这种方式,你可以让某些耗时的操作在后台执行,而不阻塞主线程,从而提高程序的响应速度和效率。

上一篇:java练习

下一篇:linux 安装 java

大家都在看

java url decode

java判断是windows还是linux

java原始数据类型

java连接数据库的代码

java date类型比较大小

java djl

ubuntu 卸载java

es java api

java常用的设计模式有哪些

java list 查找

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

Laravel 中文站