package com.demo;
import org.junit.Test;
import java.util.concurrent.CompletableFuture;
public class CompletableFutureTest {
public static void main(String[] args) {
testAsyncTaskCompletion();
}
public static void testAsyncTaskCompletion() {
// 创建一个 CompletableFuture
CompletableFuture<Void> future = new CompletableFuture<>();
// 定义一个 Runnable 任务
Runnable task = () -> {
// 模拟任务的耗时操作
for (int i = 0; i < 1000; i++) {
System.out.println("我是第"+0);
}
// 任务完成后,将 CompletableFuture 标记为完成
future.complete(null);
};
Runnable task1 = () -> {
// 模拟任务的耗时操作
for (int i = 0; i < 1000; i++) {
System.out.println("我是第"+1);
}
// 任务完成后,将 CompletableFuture 标记为完成
future.complete(null);
};
Runnable task2 = () -> {
// 模拟任务的耗时操作
for (int i = 0; i < 1000; i++) {
System.out.println("我是第"+2);
}
// 任务完成后,将 CompletableFuture 标记为完成
future.complete(null);
};
// 在一个新线程中执行任务
Thread thread = new Thread(task);
thread.start();
// 监听任务完成
future.thenRun(task1).thenRun(task2);
// 等待任务完成
// 在测试中断言任务已完成
}
}