package com.bugyun.test; import java.util.concurrent.Callable; import java.util.concurrent.CompletionService; import java.util.concurrent.ExecutionException; import java.util.concurrent.ExecutorCompletionService; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; public class MyCompletionService { private ExecutorService executorService; private CompletionService<Long> completionService; private int cpuCoreNumber; public MyCompletionService() { // 获取当前系统的CPU 数目 cpuCoreNumber = Runtime.getRuntime().availableProcessors(); // ExecutorService通常根据CPU数目定义线程池大小 executorService = Executors.newFixedThreadPool(cpuCoreNumber); // 更高级的ExecutorService completionService = new ExecutorCompletionService<Long>(executorService); } /** * 将任务分配给子任务执行 */ public Long statistic(final int[] numbers) { int size = numbers.length; for (int i = 0; i < cpuCoreNumber; i++) { int increment = size / cpuCoreNumber + 1; int start = increment * i; int end = increment * (i + 1); if (end > size){ end = size; } Task task = new Task(numbers, start, end); if(!executorService.isShutdown()){ completionService.submit(task); } } return getResult(); } /** * 遍历子任务,获取结果 */ public Long getResult() { Long result = 0l; for (int i = 0; i < cpuCoreNumber; i++) { try { Long subSum = completionService.take().get(); System.out.println(" ===> 获取结果的核是:"+i+" , 此时结果为:"+subSum); result += subSum; } catch (InterruptedException e) { e.printStackTrace(); } catch (ExecutionException e) { e.printStackTrace(); } } return result; } public void close() { executorService.shutdown(); } class Task implements Callable<Long> { private int[] numbers; private int start; private int end; public Task(final int[] numbers, int start, int end) { this.numbers = numbers; this.start = start; this.end = end; } public Long call() throws Exception { Long sum = 0l; for (int i = start; i < end; i++) { sum += numbers[i]; } return sum; } } public static void main(String... args) throws Exception { int[] numbers = new int[] { 1, 2, 3, 4, 5, 6, 7, 8, 9 }; MyCompletionService myCompletion = new MyCompletionService(); Long result = myCompletion.statistic(numbers); System.out.println("最终结果是:"+result); myCompletion.close(); } }
运行结果:
相关推荐
Python 实例 - 桌面宠物 Python源码Python 实例 - 桌面宠物 Python源码Python 实例 - 桌面宠物 Python源码Python 实例 - 桌面宠物 Python源码Python 实例 - 桌面宠物 Python源码Python 实例 - 桌面宠物 Python源码...
网页设计项目实例-杭州旅游网页(源码)网页设计项目实例-杭州旅游网页(源码)网页设计项目实例-杭州旅游网页(源码)网页设计项目实例-杭州旅游网页(源码)网页设计项目实例-杭州旅游网页(源码)网页设计项目...
MapReduce Java API实例-统计单次出现频率示例代码-MapReduceDemo.rar MapReduce Java API实例-统计单次出现频率示例代码-MapReduceDemo.rar MapReduce Java API实例-统计单次出现频率示例代码-MapReduceDemo.rar
Python 实例 - 根据IP地址查对应的地理信息 Python源码Python 实例 - 根据IP地址查对应的地理信息 Python源码Python 实例 - 根据IP地址查对应的地理信息 Python源码Python 实例 - 根据IP地址查对应的地理信息 Python...
微信小程序毕业设计,微信小程序实例-备忘录(毕业设计) 微信小程序毕业设计,微信小程序实例-备忘录(毕业设计) 微信小程序毕业设计,微信小程序实例-备忘录(毕业设计) 微信小程序毕业设计,微信小程序实例-...
路由器配置实例--100例路由器配置实例--100例路由器配置实例--100例路由器配置实例--100例
泛微OA-ecology-二次开发实例-开发完整说明.pdf
51单片机Proteus仿真实例 K1-K4-分组控制LED51单片机Proteus仿真实例 K1-K4-分组控制LED51单片机Proteus仿真实例 K1-K4-分组控制LED51单片机Proteus仿真实例 K1-K4-分组控制LED51单片机Proteus仿真实例 K1-K4-分组...
Python 实例 - 贺卡 Python源码Python 实例 - 贺卡 Python源码Python 实例 - 贺卡 Python源码Python 实例 - 贺卡 Python源码Python 实例 - 贺卡 Python源码Python 实例 - 贺卡 Python源码Python 实例 - 贺卡 Python...
Python 实例 - 画画 Python源码Python 实例 - 画画 Python源码Python 实例 - 画画 Python源码Python 实例 - 画画 Python源码Python 实例 - 画画 Python源码Python 实例 - 画画 Python源码Python 实例 - 画画 Python...
Python 实例 - 抖音表白 Python源码Python 实例 - 抖音表白 Python源码Python 实例 - 抖音表白 Python源码Python 实例 - 抖音表白 Python源码Python 实例 - 抖音表白 Python源码Python 实例 - 抖音表白 Python源码...
Python 实例 - 截图工具 Python源码Python 实例 - 截图工具 Python源码Python 实例 - 截图工具 Python源码Python 实例 - 截图工具 Python源码Python 实例 - 截图工具 Python源码Python 实例 - 截图工具 Python源码...
Python 实例 - 五星红旗 Python源码Python 实例 - 五星红旗 Python源码Python 实例 - 五星红旗 Python源码Python 实例 - 五星红旗 Python源码Python 实例 - 五星红旗 Python源码Python 实例 - 五星红旗 Python源码...
Python 实例 - 快递查询 Python源码Python 实例 - 快递查询 Python源码Python 实例 - 快递查询 Python源码Python 实例 - 快递查询 Python源码Python 实例 - 快递查询 Python源码Python 实例 - 快递查询 Python源码...
Python 实例 - 简易时钟 Python源码Python 实例 - 简易时钟 Python源码Python 实例 - 简易时钟 Python源码Python 实例 - 简易时钟 Python源码Python 实例 - 简易时钟 Python源码Python 实例 - 简易时钟 Python源码...
Python 实例 - 翻译软件 Python源码Python 实例 - 翻译软件 Python源码Python 实例 - 翻译软件 Python源码Python 实例 - 翻译软件 Python源码Python 实例 - 翻译软件 Python源码Python 实例 - 翻译软件 Python源码...
Python 实例 - 代码雨 Python源码Python 实例 - 代码雨 Python源码Python 实例 - 代码雨 Python源码Python 实例 - 代码雨 Python源码Python 实例 - 代码雨 Python源码Python 实例 - 代码雨 Python源码Python 实例 - ...
Python 实例 - 画爱心 Python源码Python 实例 - 画爱心 Python源码Python 实例 - 画爱心 Python源码Python 实例 - 画爱心 Python源码Python 实例 - 画爱心 Python源码Python 实例 - 画爱心 Python源码Python 实例 - ...
Python 实例 - personal-qrcode个性二维码 Python源码Python 实例 - personal-qrcode个性二维码 Python源码Python 实例 - personal-qrcode个性二维码 Python源码Python 实例 - personal-qrcode个性二维码 Python源码...