一种代码示例是使用ExecutorService类的submit()方法提交多个Callable任务,并返回多个Future对象,
然后在主线程中循环调用Future对象的get()方法获取结果,并进行汇总1。
代码如下: import java.math.BigDecimal; import java.util.ArrayList; import java.util.List; import java.util.concurrent.Callable; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import java.util.concurrent.Future; public class FutureExample { public static void main(String[] args) throws Exception { // 创建一个线程池 ExecutorService executor = Executors.newCachedThreadPool(); // 创建一个列表存放多个Future对象 List<Future<Double>> futureList = new ArrayList<>(); // 提交多个Callable任务,并返回多个Future对象 for (int i = 0; i < 10; i++) { Future<Double> future = executor.submit(new Callable<Double>() { public Double call() { // 模拟一个耗时的计算 return Math.random() * 100; } }); futureList.add(future); } // 在主线程中做其他事情 System.out.println("Doing something else..."); // 创建一个变量存放总和 BigDecimal sum = BigDecimal.ZERO; // 循环获取异步任务的结果,并进行汇总 for (Future<Double> future : futureList) { Double result = future.get(); sum = sum.add(new BigDecimal(result)); System.out.println("Result: " + result); } // 输出总和 System.out.println("Sum: " + sum); // 关闭线程池 executor.shutdown(); } } 另一种代码示例是使用CompletableFuture类,它提供了更多的方法来创建和组合异步任务,并且可以添加回调函数来处理结果或异常2。
代码如下: import java.math.BigDecimal; import java.util.ArrayList; import java.util.List; import java.util.concurrent.CompletableFuture; public class CompletableFutureExample { public static void main(String[] args) throws Exception { // 创建一个列表存放多个CompletableFuture对象 List<CompletableFuture<Double>> futureList = new ArrayList<>(); // 使用静态方法supplyAsync创建多个异步任务,并返回多个CompletableFuture对象 for (int i = 0; i < 10; i++) { CompletableFuture<Double> future = CompletableFuture.supplyAsync(() -> { // 模拟一个耗时的计算 return Math.random() * 100; }); futureList.add(future); } // 在主线程中做其他事情 System.out.println("Doing something else..."); // 创建一个变量存放总和 BigDecimal sum = BigDecimal.ZERO; // 循环获取异步任务的结果,并进行汇总 for (CompletableFuture<Double> future : futureList) { Double result = future.get(); sum = sum.add(new BigDecimal(result)); System.out.println("Result: " + result); } // 输出总和 System.out.println("Sum: " + sum); } }
标签:java,BigDecimal,get,sum,util,future,import From: https://www.cnblogs.com/easycoding20211115/p/17272083.html