{/'title/':/'Java 8 通用线程池工具类:使用 CompletableFuture 和 ExecutorService 执行异步任务/',/'description/':/'使用 Java 8 的 CompletableFuture 和 ExecutorService 实现一个通用线程池工具类,简化异步任务执行,提供单任务和批量任务提交功能,并支持获取任务执行结果。/',/'keywords/':/'Java 8, 线程池, CompletableFuture, ExecutorService, 异步任务, 任务执行, 任务结果, 通用工具类/',/'content/':/'///'///'///'java//nimport java.util.List;//nimport java.util.concurrent.CompletableFuture;//nimport java.util.concurrent.ExecutorService;//nimport java.util.concurrent.Executors;//nimport java.util.stream.Collectors;//n//npublic class ThreadPoolUtils {//n//n private static final int DEFAULT_THREAD_POOL_SIZE = 10;//n private static ExecutorService executorService;//n//n static {//n executorService = Executors.newFixedThreadPool(DEFAULT_THREAD_POOL_SIZE);//n }//n//n public static //<T//> CompletableFuture//<T//> submitTask(Task//<T//> task) {//n return CompletableFuture.supplyAsync(() -> task.execute(), executorService);//n }//n//n public static //<T//> List//<CompletableFuture//<T//>//> submitTasks(List//<Task//<T//>//> tasks) {//n return tasks.stream()//n .map(task -> CompletableFuture.supplyAsync(() -> task.execute(), executorService))//n .collect(Collectors.toList());//n }//n//n public static void shutdown() {//n executorService.shutdown();//n }//n}//n///'///'///'//n///'///'///'java//nimport java.util.Arrays;//nimport java.util.List;//nimport java.util.concurrent.CompletableFuture;//n//npublic class Main {//n//n public static void main(String[] args) {//n Task//<String//> task1 = () -> {//n // 执行异步任务 1//n return ///'Task 1 Result///';//n };//n//n Task//<String//> task2 = () -> {//n // 执行异步任务 2//n return ///'Task 2 Result///';//n };//n//n CompletableFuture//<String//> future1 = ThreadPoolUtils.submitTask(task1);//n CompletableFuture//<String//> future2 = ThreadPoolUtils.submitTask(task2);//n//n // 等待所有任务完成//n CompletableFuture.allOf(future1, future2).join();//n//n try {//n System.out.println(///'Task 1 Result: ///' + future1.get());//n System.out.println(///'Task 2 Result: ///' + future2.get());//n } catch (Exception e) {//n e.printStackTrace();//n }//n//n // 批量提交任务//n List//<Task//<String//>//> tasks = Arrays.asList(task1, task2);//n List//<CompletableFuture//<String//>//> futures = ThreadPoolUtils.submitTasks(tasks);//n//n // 等待所有任务完成//n CompletableFuture.allOf(futures.toArray(new CompletableFuture[0])).join();//n//n futures.forEach(future -> {//n try {//n System.out.println(///'Task Result: ///' + future.get());//n } catch (Exception e) {//n e.printStackTrace();//n }//n });//n//n // 关闭线程池//n ThreadPoolUtils.shutdown();//n }//n}//n//ninterface Task//<T//> {//n T execute();//n}//n///'///'///'//n//n通过 ThreadPoolUtils 类,您可以提交异步任务并在任务完成后获取结果。您可以单独提交任务,也可以批量提交任务。请注意,您需要根据需要自定义异步任务的实现,实现 Task 接口的 execute() 方法。/

Java 8 通用线程池工具类:使用 CompletableFuture 和 ExecutorService 执行异步任务

原文地址: https://www.cveoy.top/t/topic/p25R 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录