java并行任务,Java 并发编程学习(五):批量并行执行任务的两种方式
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 并发编程学习(五):批量并行执行任务的两种方式相关推荐
- 19、Java并发编程:线程间协作的两种方式:wait、notify、notifyAll和Condition
Java并发编程:线程间协作的两种方式:wait.notify.notifyAll和Condition 在前面我们将了很多关于同步的问题,然而在现实中,需要线程之间的协作.比如说最经典的生产者-消费者 ...
- Java版数据结构之单向链表 新增,有序新增的两种方式,修改和删除(CRUD)
Java版数据结构之单向链表 CRUD Java版数据结构之单向链表 新增,有序新增的两种方式,修改和删除; 留了一个疑问; 我的代码仓库:https://github.com/zhuangbinan ...
- 基于《狂神说Java》JUC并发编程--学习笔记
前言: 本笔记仅做学习与复习使用,不存在刻意抄袭. -------------------------------------------------------------------------- ...
- java中map类型_Java中Map类型遍历的两种方式对比
Java中Map类型是存储键值对数据的类型,在编程过程经常使用,进行遍历操作对于每个Java程序员都不会模式,下面总结两种常用的遍历方式(一种keySet,一种entrySet),通过对比让你明白使用 ...
- java中byte数组与int类型的转换(两种方式)
java中byte数组与int类型的转换,在网络编程中这个算法是最基本的算法,我们都知道,在socket传输中,发送.者接收的数据都是 byte数组,但是int类型是4个byte组成的,如何把一个整形 ...
- Java常见面试题:对象的访问定位的两种方式
对象的访问定位的两种方式 java对象在访问的时候,我们需要通过java虚拟机栈的reference类型的数据去操作具体的对象. 由于reference类型在java虚拟机规范中只规定了一个对象的引用 ...
- java木马_Java校验上传图片文件是否含有木马的两种方式
这两天开发一个app遇到了上传文件的安全问题,在这里记录下来,弥补自己只有鱼的记忆的缺陷,也希望有人能够提供更好的思路去解决文件上传的安全问题. 下面这个类是文件上传的公共方法,ToolUtils判断 ...
- java get和post请求参数设置,Get和Post两种方式向指定地址提交表单
做Java做了很多年,却总是把一些东西遗忘,过后再着急的找寻.最近,需要通过Java代码模拟一个表单提交,却怎么也想不起来如何封装数据了. 本篇主要描述Java网络参数传递,主要分为get和post两 ...
- 获取Executor提交的并发执行的任务返回结果的两种方式/ExecutorCompletionService使用...
当我们通过Executor提交一组并发执行的任务,并且希望在每一个任务完成后能立即得到结果,有两种方式可以采取: 方式一: 通过一个list来保存一组future,然后在循环中轮训这组future,直 ...
最新文章
- 链表问题2——在双链表中删除倒数第K个节点
- [Android Studio 权威教程]Windows下安装Android Studio
- 牛客网选择题之linux
- mysql 备份 索引_mysql-索引、导入、导出、备份、恢复
- Spring-第1天
- 虚拟ldap服务器,ldap服务器 客户端配置
- win7 ie9总是跳转到官方主页的解决方法
- python实现连接池技术
- (尚硅谷)2022 版 MyBatis 教程笔记一
- “微积分7天搞定”学习记录
- 2300. 咒语和药水的成功对数 ●●
- 有5个人坐在一起,问第五个人多少岁?他说比第4个人大2岁。问第4个人岁数,他说比第3个人大2岁。问第三个人,又说比第2人大两岁。问第2个人,说比第一个人大两岁。最后问第一个人,他说是10岁。请问第五个
- Unity_回合制战斗系统_01
- 2048游戏代码java总结_软件工程——Java版2048游戏学习报告
- Cesium与STK中的天空盒子(skybox)
- 以学生使用计算机写一篇英语作文,学英语的感受作文200:《学习心得》英语作文100字...
- 第13期《凤凰涅槃,浴火重生!》2月刊
- EF Power Tools参数不正确的解决方法
- python编程1-win7上运行python
- onConfigurationChanged