import java.util.concurrent.CompletableFuture;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
public class CompletableFutureExample {
public static void main(String[] args) {
// 创建一个固定大小的线程池
ExecutorService executor = Executors.newFixedThreadPool(4);
// 使用自定义线程池来执行CompletableFuture任务
CompletableFuture.supplyAsync(() -> {
System.out.println("Task is running in thread: " + Thread.currentThread().getName());
return "Hello, World!";
}, executor).thenAccept(result -> {
System.out.println("Result received: " + result);
});
// 关闭线程池
executor.shutdown();
}
}
创建线程池:
ExecutorService executor = Executors.newFixedThreadPool(4);使用自定义线程池:
CompletableFuture.supplyAsync(() -> { ... }, executor)supplyAsync 方法接受两个参数:一个 Supplier 函数式接口和一个 Executor。Supplier 用于提供异步任务的结果,而 Executor 指定任务运行的线程池。"Hello, World!"。处理结果:
.thenAccept(result -> { ... })thenAccept 方法用于在任务完成后处理结果。这里我们只是简单地打印了接收到的结果。关闭线程池:
executor.shutdown();如果你想要使用默认线程池(即 ForkJoinPool.commonPool()),只需去掉第二个参数 executor 即可:
CompletableFuture.supplyAsync(() -> {
System.out.println("Task is running in thread: " + Thread.currentThread().getName());
return "Hello, World!";
}).thenAccept(result -> {
System.out.println("Result received: " + result);
});
下一篇:java判断字符串是否为数字
Laravel PHP 深圳智简公司。版权所有©2023-2043 LaravelPHP 粤ICP备2021048745号-3
Laravel 中文站