并发是Java进阶的分水岭也是拉开薪资差距的核心能力。为了帮大家避开碎片化学习误区我整理了一套《Java并发编程实战》视频课覆盖线程基础、JMM底层、锁机制、JUC工具、线程池、并发设计模式与线上实战。全程原理源码实战调优一站式打通零基础也能轻松吃透Java并发彻底摆脱技术瓶颈。基础用法import java.util.concurrent.CompletableFuture; import java.util.concurrent.ExecutionException; public class BasicExample { public static void main(String[] args) throws ExecutionException, InterruptedException { // 示例 1: 异步执行简单任务 CompletableFutureString future CompletableFuture.supplyAsync(() - { try { Thread.sleep(1000); // 模拟耗时操作 } catch (InterruptedException e) { throw new IllegalStateException(e); } return 任务完成; }); System.out.println(主线程继续执行...); System.out.println(结果: future.get()); // 阻塞获取结果 // 示例 2: 链式调用 CompletableFuture.supplyAsync(() - Hello) .thenApply(s - s World) .thenApply(String::toUpperCase) .thenAccept(System.out::println); // 输出: HELLO WORLD } }组合多个 Futureimport java.util.concurrent.CompletableFuture; import java.util.concurrent.TimeUnit; public class CombineExample { public static void main(String[] args) { // 示例 1: thenCombine - 合并两个独立任务的结果 CompletableFutureString future1 CompletableFuture.supplyAsync(() - { sleep(1); return 用户信息; }); CompletableFutureString future2 CompletableFuture.supplyAsync(() - { sleep(2); return 订单信息; }); future1.thenCombine(future2, (result1, result2) - 组合结果: result1 result2) .thenAccept(System.out::println); // 示例 2: allOf - 等待所有任务完成 CompletableFutureVoid allFutures CompletableFuture.allOf( CompletableFuture.runAsync(() - System.out.println(任务1完成)), CompletableFuture.runAsync(() - System.out.println(任务2完成)), CompletableFuture.runAsync(() - System.out.println(任务3完成)) ); allFutures.thenRun(() - System.out.println(所有任务都完成了)); sleep(3); } private static void sleep(int seconds) { try { TimeUnit.SECONDS.sleep(seconds); } catch (InterruptedException e) { Thread.currentThread().interrupt(); } } }异常处理import java.util.concurrent.CompletableFuture; public class ExceptionHandlingExample { public static void main(String[] args) { // 示例 1: exceptionally - 异常恢复 CompletableFutureString future CompletableFuture.supplyAsync(() - { if (Math.random() 0.5) { throw new RuntimeException(模拟异常); } return 成功结果; }).exceptionally(ex - { System.out.println(发生异常: ex.getMessage()); return 默认值; }); future.thenAccept(System.out::println); // 示例 2: handle - 无论成功失败都处理 CompletableFuture.supplyAsync(() - { return 处理数据; }).handle((result, ex) - { if (ex ! null) { return 异常处理: ex.getMessage(); } return 成功: result; }).thenAccept(System.out::println); // 示例 3: whenComplete - 完成后回调 CompletableFuture.supplyAsync(() - 任务执行) .whenComplete((result, ex) - { if (ex ! null) { System.out.println(任务失败: ex.getMessage()); } else { System.out.println(任务成功: result); } }); } }这些示例展示了 CompletableFuture 的核心功能可以根据具体需求组合使用。扩展CompletableFuture 的线程池默认线程池ForkJoinPoolpublic class DefaultThreadPoolExample { public static void main(String[] args) { // 默认使用 ForkJoinPool.commonPool() CompletableFutureString future1 CompletableFuture.supplyAsync(() - { System.out.println(线程: Thread.currentThread().getName()); return 默认线程池; }); // 查看默认线程池信息 ForkJoinPool commonPool ForkJoinPool.commonPool(); System.out.println(并行度: commonPool.getParallelism()); System.out.println(活跃线程数: commonPool.getActiveThreadCount()); } }自定义线程池import java.util.concurrent.*; public class CustomThreadPoolExample { public static void main(String[] args) { // 创建自定义线程池 ExecutorService customExecutor Executors.newFixedThreadPool(5); // 使用自定义线程池 CompletableFutureString future1 CompletableFuture.supplyAsync(() - { System.out.println(任务1 - 线程: Thread.currentThread().getName()); return 结果1; }, customExecutor); CompletableFutureString future2 CompletableFuture.supplyAsync(() - { System.out.println(任务2 - 线程: Thread.currentThread().getName()); return 结果2; }, customExecutor); // 关闭线程池 customExecutor.shutdown(); } }并发是Java进阶的分水岭也是拉开薪资差距的核心能力。为了帮大家避开碎片化学习误区我整理了一套《Java并发编程实战》视频课覆盖线程基础、JMM底层、锁机制、JUC工具、线程池、并发设计模式与线上实战。全程原理源码实战调优一站式打通零基础也能轻松吃透Java并发彻底摆脱技术瓶颈。