// Java 异步执行示例代码
import java.util.concurrent.CompletableFuture;
import java.util.concurrent.ExecutionException;
public class AsyncExample {
// 模拟一个耗时的任务
public static String longRunningTask() {
try {
Thread.sleep(2000); // 模拟耗时操作
} catch (InterruptedException e) {
e.printStackTrace();
}
return "任务完成";
}
// 异步执行任务的方法
public static void asyncTask() {
// 使用 CompletableFuture 来异步执行任务
CompletableFuture<String> future = CompletableFuture.supplyAsync(() -> {
return longRunningTask();
});
// 当任务完成时,打印结果
future.thenAccept(result -> {
System.out.println("异步任务的结果是: " + result);
});
// 防止主线程提前结束
try {
future.get(); // 等待异步任务完成
} catch (InterruptedException | ExecutionException e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
System.out.println("开始执行异步任务...");
asyncTask();
System.out.println("异步任务已启动,主线程继续执行其他任务...");
}
}
longRunningTask():这是一个模拟的耗时任务,使用 Thread.sleep(2000) 来模拟 2 秒的延迟。这个方法返回一个字符串 "任务完成"。
asyncTask():这是异步执行任务的方法。我们使用了 CompletableFuture.supplyAsync() 来异步执行 longRunningTask() 方法。supplyAsync() 会在一个新的线程中执行传入的 Lambda 表达式,并返回一个 CompletableFuture 对象。
future.thenAccept():当异步任务完成后,thenAccept() 会接收任务的结果并执行相应的操作。这里我们只是简单地将结果打印出来。
future.get():为了防止主线程提前结束,我们调用了 future.get() 来等待异步任务完成。如果不调用 get(),主线程可能会在异步任务完成之前就结束了。
main():在 main() 方法中,我们调用了 asyncTask() 来启动异步任务,并在控制台输出一些信息来表明任务的状态。
这段代码展示了如何使用 CompletableFuture 来实现 Java 中的异步任务执行。
上一篇:java获取ip地址的方法
Laravel PHP 深圳智简公司。版权所有©2023-2043 LaravelPHP 粤ICP备2021048745号-3
Laravel 中文站