Java 并发编程学习(五):批量并行执行任务的两种方式

背景介绍

有时候我们需要执行一批相似的任务,并且要求这些任务能够并行执行。通常,我们的需求会分为两种情况:

并行执行一批任务,等待耗时最长的任务完成之后,再处理所有任务的结果。

并行执行一批任务,依次处理完成的任务结果(哪个任务先执行完就先处理哪个)。

这篇文章要介绍的两种批量执行任务的方式,正好对应了上述两种情况,下面分别介绍在Java中,如何使用并发包里面的API完成我们的需求。

使用ExecutorSevice#invokeAll()

通过向线程池提交一组任务,可以实现上述第一种批量执行的需求。下面来看具体例子。

import java.util.ArrayList;

import java.util.List;

import java.util.concurrent.*;

public class Main {

public static void main(String[] args) throws InterruptedException, ExecutionException {

// 创建两个任务

CallableInteger task1 = () - {

TimeUnit.SECONDS.sleep(3);

System.out.println("[" + Thread.currentThread().getName() + "]" + " task1 finished");

return 1;

};

Cal

java并行任务,Java 并发编程学习(五):批量并行执行任务的两种方式相关推荐

  1. 19、Java并发编程:线程间协作的两种方式:wait、notify、notifyAll和Condition

    Java并发编程:线程间协作的两种方式:wait.notify.notifyAll和Condition 在前面我们将了很多关于同步的问题,然而在现实中,需要线程之间的协作.比如说最经典的生产者-消费者 ...

  2. Java版数据结构之单向链表 新增,有序新增的两种方式,修改和删除(CRUD)

    Java版数据结构之单向链表 CRUD Java版数据结构之单向链表 新增,有序新增的两种方式,修改和删除; 留了一个疑问; 我的代码仓库:https://github.com/zhuangbinan ...

  3. 基于《狂神说Java》JUC并发编程--学习笔记

    前言: 本笔记仅做学习与复习使用,不存在刻意抄袭. -------------------------------------------------------------------------- ...

  4. java中map类型_Java中Map类型遍历的两种方式对比

    Java中Map类型是存储键值对数据的类型,在编程过程经常使用,进行遍历操作对于每个Java程序员都不会模式,下面总结两种常用的遍历方式(一种keySet,一种entrySet),通过对比让你明白使用 ...

  5. java中byte数组与int类型的转换(两种方式)

    java中byte数组与int类型的转换,在网络编程中这个算法是最基本的算法,我们都知道,在socket传输中,发送.者接收的数据都是 byte数组,但是int类型是4个byte组成的,如何把一个整形 ...

  6. Java常见面试题:对象的访问定位的两种方式

    对象的访问定位的两种方式 java对象在访问的时候,我们需要通过java虚拟机栈的reference类型的数据去操作具体的对象. 由于reference类型在java虚拟机规范中只规定了一个对象的引用 ...

  7. java木马_Java校验上传图片文件是否含有木马的两种方式

    这两天开发一个app遇到了上传文件的安全问题,在这里记录下来,弥补自己只有鱼的记忆的缺陷,也希望有人能够提供更好的思路去解决文件上传的安全问题. 下面这个类是文件上传的公共方法,ToolUtils判断 ...

  8. java get和post请求参数设置,Get和Post两种方式向指定地址提交表单

    做Java做了很多年,却总是把一些东西遗忘,过后再着急的找寻.最近,需要通过Java代码模拟一个表单提交,却怎么也想不起来如何封装数据了. 本篇主要描述Java网络参数传递,主要分为get和post两 ...

  9. 获取Executor提交的并发执行的任务返回结果的两种方式/ExecutorCompletionService使用...

    当我们通过Executor提交一组并发执行的任务,并且希望在每一个任务完成后能立即得到结果,有两种方式可以采取: 方式一: 通过一个list来保存一组future,然后在循环中轮训这组future,直 ...

最新文章

  1. 链表问题2——在双链表中删除倒数第K个节点
  2. [Android Studio 权威教程]Windows下安装Android Studio
  3. 牛客网选择题之linux
  4. mysql 备份 索引_mysql-索引、导入、导出、备份、恢复
  5. Spring-第1天
  6. 虚拟ldap服务器,ldap服务器 客户端配置
  7. win7 ie9总是跳转到官方主页的解决方法
  8. python实现连接池技术
  9. (尚硅谷)2022 版 MyBatis 教程笔记一
  10. “微积分7天搞定”学习记录
  11. 2300. 咒语和药水的成功对数 ●●
  12. 有5个人坐在一起,问第五个人多少岁?他说比第4个人大2岁。问第4个人岁数,他说比第3个人大2岁。问第三个人,又说比第2人大两岁。问第2个人,说比第一个人大两岁。最后问第一个人,他说是10岁。请问第五个
  13. Unity_回合制战斗系统_01
  14. 2048游戏代码java总结_软件工程——Java版2048游戏学习报告
  15. Cesium与STK中的天空盒子(skybox)
  16. 以学生使用计算机写一篇英语作文,学英语的感受作文200:《学习心得》英语作文100字...
  17. 第13期《凤凰涅槃,浴火重生!》2月刊
  18. EF Power Tools参数不正确的解决方法
  19. python编程1-win7上运行python
  20. onConfigurationChanged

热门文章

  1. 中国-8月两轮车市场加速增长(+7%)
  2. XBee/XBee-PRO ZB(S2C)迁移至XBee3 模块
  3. vbox官方下载地址
  4. Doo Group 积极践行绿色金融理念,构建全球金融服务体系
  5. 快速绘图,不可不知的CAD经典技巧!
  6. 一位金融工程小硕的华丽逆袭人生!超真实Quant菜鸟的修行路
  7. 嵌入式硬盘录像机与视频采集卡的不同
  8. PYTHON 黑帽资料
  9. TLE双行轨道数解析
  10. 【华为OD考试真题】报数游戏(Python实现)