使用CompletionService结合ExecutorService批处理任务
发表于:2026-11-02 作者:千家信息网编辑
千家信息网最后更新 2026年11月02日,CompletionService用于提交一组Callable任务,其take方法返回已完成的一个Callable任务对应的Future对象。如果你向Executor提交了一个批处理任务,并且希望在它
千家信息网最后更新 2026年11月02日使用CompletionService结合ExecutorService批处理任务
CompletionService用于提交一组Callable任务,其take方法返回已完成的一个Callable任务对应的Future对象。
如果你向Executor提交了一个批处理任务,并且希望在它们完成后获得结果。为此你可以将每个任务的Future保存进一个集合,然后循环这个集合调用Future的get()取出数据。幸运的是CompletionService帮你做了这件事情。
CompletionService整合了Executor和BlockingQueue的功能。你可以将Callable任务提交给它去执行,然后使用类似于队列中的take和poll方法,在结果完整可用时获得这个结果,像一个打包的Future。
CompletionService的take返回的future是哪个先完成就先返回哪一个,而不是根据提交顺序。
例子:
1 import java.util.Random; 2 import java.util.concurrent.Callable; 3 import java.util.concurrent.CompletionService; 4 import java.util.concurrent.ExecutionException; 5 import java.util.concurrent.ExecutorCompletionService; 6 import java.util.concurrent.ExecutorService; 7 import java.util.concurrent.Executors; 8 9 public class CallableAndFuture {10 11 public static void main(String[] args) {12 ExecutorService threadPool = Executors. newFixedThreadPool(10);13 CompletionService completionService = new ExecutorCompletionService(threadPool);14 15 for (int i = 0; i < 10; i++) {16 final int seq = i;17 System. out.println("开始提交第" + seq + "个任务");18 completionService.submit( new Callable() {19 20 @Override21 public Integer call() throws Exception {22 Thread. sleep(new Random().nextInt(5000));23 return seq;24 }25 });26 }27 28 for (int i = 0; i < 10; i++) {29 try {30 // 取出并移除表示下一个已完成任务的 Future,如果目前不存在这样的任务,则等待。31 Integer seq = completionService.take().get();32 System. out.println("第" + seq + "个任务返回");33 } catch (InterruptedException e) {34 e.printStackTrace();35 } catch (ExecutionException e) {36 e.printStackTrace();37 }38 }39 }40 41 }
任务
结果
方法
幸运
为此
事情
例子
功能
对象
成就
数据
队列
顺序
循环
整合
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
为想互联网科技怎么样
世界互联网领先科技成果
赫美联合互联网科技
广州善班互联网科技
海南购全球互联网科技
老年人脱离互联网科技的作文
阿里巴巴算科技企业还是互联网
互联网科技有哪些公司
互联网与医疗科技
辽宁互联网新科技
链环科技传统企业怎么转型互联网
中国互联网十大科技股排名
特约风豹互联网科技为什么扣费
互联网金融科技元年
怎样加入科技互联网
山东星卡互联网科技有限公司官网
同城互联网络科技
好易买互联网科技
互联网的黑科技实验室
恒生科技互联网指数十大成分股
重生之互联网科技帝国
圆梦互联网科技
互联网科技小贷
伴你行互联网科技有限公司
撒么互联网科技公司
央行互联网金融科技公司
互联网金融中的现代科技
宝灵互联网科技有限公司
卓翼科技产业互联网合作
黑科技 体验场景 互联网大会