【应用场景/主要解决问题】
主要利用并行计算解决,全省地灾气象预警计算效率问题。我们设计格网模型集合,加载到内存中,每一步分析直接并行操作格网集合,避免频繁读取更新数据库,因网络IO,数据库IO 瓶颈效率低下。
还有一个关键问题,内存中的中间结果,分析结果怎样实时利用GIS平台发布,下一篇介绍。
【内容描述】
什么任务适合并行:
对CPU密集型的任务来说,并行流使用ForkJoinPool,为每个CPU分配一个任务,这是非常有效率的,但是如果任务不是CPU密集的,而是I/O密集的,并且任务数相对线程数比较大,那么直接用ParallelStream并不是很好的选择,例如写文件,查询数据库就不太适合。
应用场景影响并行流的主要七个因素
1 数据大小
输入数据的大小会影响并行化处理,当只有足够大、每个数据处理管道花费的时间足够多时,并行化才有意义
2 源数据结构
一般都是基于集合进行并行化
3 装箱
处理基本类型比处理装箱类型要快
4 cpu核的数量
只有在多核的机器上使用才有意义,并且是运行时能够使用的多少核
5 单元处理开销
原先处理耗时较长,使用并行化才有意义
6 任务之间最好是状态无关的,因为parallelStream默认是非线程安全的,可能带来结果的不确定性。
7 并行执行无序
【截图(如有)】
时间单位毫秒,明显提升27,226毫秒。